SMALL
level9 // apple
bof (buffer overflow)문제이다.
저 조건에 충족하게 입력값을 쌓아주면 된다.
메모리 구조상 buf2, buf 순으로 변수가 쌓이게 된다.
하지만 입력은 buf만 받는다..? 일단 구조는 이렇다.
음 구조상 A*10 , go 해줘서 buf2에 씌워줬는데 안된닷 (별에별 시도를 했지만 안됨)
gdb로 분석하려고 했는데..
ㅠㅠㅠ 슬프군 하지만 그렇다면 다른 방법을 !
소스코드 복사해서 /tmp에 만들고 컴파일후 분석하기로했다.
난 인텔 문법이 좋으니까 설정한후 까보았다.
핵심은 뭐다? 필요한것만 빠르게 후후훅 보는거다.
보니 sub esp, 0x28을 통해 40바이트 만큼 확보를 해준다. 그뒤로 쭉쭉 보니 buf2와 buf를 할당해 주는게 보이는데
lea eax, [ebp-40]을 통해 buf
push 0x2 , push 0x804856a, push eax (lea eax, [ebp-24]) 를 통해 strncmp 함수 인자를 받는 것을 보아 buf2인것을 확인했다.
근데 10바이트만큼씩 있었던 변수들이 16바이트, 24바이트 씩 있다. dummy값이 쌓인것으로 추정이 되었다.
buf와 더미를 채우고 go를 해주면 되겠다!
결과는 성공! 다음단계로~