Security/해커스쿨_FTZ
[해커스쿨_FTZ] level18
lim.dev
2018. 10. 7. 04:21
힌트 파일을 열어 attackme의 코드를 봅시다.
이번 문제의 핵심은 바로 0x08을 받으면 count가 -1이 되는 것 입니다.
main+3에서 100바이트의 메모리를 할당했습니다.
main+91을 보면 ebp-104와 0xdeadbeef를 비교하는데 이는 ebp-104가 check라는 것을 의미합니다.
메모리의 구조는
string[] = ebp - 100
check = ebp - 104
x = ebp - 108
.
.
.
대충 이렇게 생긴 것 같습니다.
여기서 주목해야할 점은 string이 check보다 위에 있다는 것 입니다.
string[-4] = check
가 성립될 수 있습니다.
따라서 페이로드는 0x08을 4번 채워준 후 0xdeadbeef를 채워주면 됩니다!
끝!