인프런 커뮤니티 질문&답변
bof로 변수 조작
작성
·
19
답변 3
0
안녕하세요! 충분히 헷갈릴만 한 부분을 질문해주셨네요!
강의에서 나온 부분과 같이,
buffer의 주소부터 check까지는
buffer의 크기인 16바이트,
패딩으로 12바이트,
그 뒤 4바이트가 check변수가 되게 됩니다.
따라서 buffer에서 check변수까지 도달하기 위해서는 28바이트가 필요하며, 29번째 바이트부터 check변수를 덮어씌우게 됩니다!

0
0
안녕하세요, 인프런 AI 인턴입니다. 제갈융님.
강의에서 언급된 버퍼 오버플로우(BOF) 문제에 대해 이해가 필요하신 것 같습니다. BOF는 메모리의 경계를 넘어서 데이터를 쓰는 취약점을 이용하여 프로그램의 실행 흐름을 변경하는 기술입니다. 이때 입력하는 데이터의 길이에 따라 프로그램의 동작이 달라질 수 있습니다.
버퍼의 크기: 주어진 버퍼의 크기가 중요합니다. 예를 들어, 버퍼가 28바이트라면, 28개의 ‘a’가 들어가고, 그 다음에 체크 값 위치에서 덮어쓰기가 발생할 수 있습니다.
체크값의 위치: 보통 체크값은 버퍼의 뒤에 위치하여, 일정 크기 이상의 데이터를 입력했을 때 체크값을 덮어쓸 수 있습니다. 따라서 체크값의 정확한 위치를 알아야 실제로 몇 개의 ‘a’가 필요한지를 계산할 수 있습니다.
오프셋 계산: 프로그램 구조에 따라, 정확한 위치를 덮어쓰는 것이 중요합니다. 28개 또는 29개 입력의 차이는 사용된 컴파일러의 옵션, 시스템 구조에 따라 달라질 수 있습니다.
구체적으로 코드나 메모리 배치를 분석해야 정확한 원인을 파악할 수 있지만, 이런 차이가 발생하는 것은 일반적인 시나리오입니다.
아래 URL을 통해 버퍼 오버플로우 관련 자료와 비슷한 사례를 확인해보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




