fgets 에서 변수 buf 크기보다 30를 넘게 더 입력받아 bof가 발생한다.
[그림 1-2] 를 참조하면 [그림 1-3] 를 그릴 수 있다.
따라서 payload 는 "A"*16 + "go" 이다.
성공! 실제 실행파일인 /usr/bin/bof 를 실행하자
level10이 되었다!
gdb 를 통해 자세히 분석 ㄲ
main + 65 실행 후 eax 값을 보면 주소값이 들어가 있다. 주소로 이동하면 0x000a6f67 값이 들어가 있다.
strncpy 에서 2 글자를 가지오면 0x67 0x6f 를 가져오는데 이 값이 아스키값 "go" 라는 걸 알 수 있다.
따라서 성공!