완료됨
Out Of Boundary, oob-3.c 코드와 메모리 구조가 다른것 같습니다.

2^-31 을 입력하여 idx = - idx 을 우회하고, idx = idx % 10 을 하여 idx = -8 으로 만들어 공격을 하는 예제입니다.
하지만, idx가 음수인 경우 buf 의 하위 메모리 주소들을 접근하게 되는데(스택에서의 배열은 buf + 0x4 * idx 으로 접근하기에 buf 보다 낮은 주소들을 접근함)
target인 win 변수는 코드상 buf 보다 앞서 정의 되어있으며, 직접 gcc로 컴파일 해보아도 아래와 같이 위치하게 됩니다.
buf : rbp - 0x60
idx : rbp - 0x8
win : rbp - 0x4

즉 win 변수는 buf보다 상위 주소에 위치하여 idx 의 값이 음수가 되면 접근을 할 수 없게됩니다.
컴파일 하실 때, 어떤 flag를 넣으셨는지는 모르겠지만, win 변수는 https://dreamhack.io/learn/14#13 에서 오른쪽에 나온 모습과 비슷하게 buf보다 상위 주소에 위치하고 있는 것을 보입니다.
한번 다시 확인해주셨으면 좋겠습니다.

#시스템해킹
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
Dreamhack
대표 업적 없음

피드백 감사합니다. 수정 완료했습니다 : )

2020.02.05. 13:56