LOB_15.giant->assassin
해킹/LOB 2016. 1. 31. 18:19
이제는 라이브러리로의 점프까지 막아놨다.
여러가지로 헤메다 결국 답을 봤는데 조금 충격이었다.
여태까지 RTL이나 execve등 뒷쪽 버퍼를 막지 않는 문제는 전부다 이방법으로 풀 수 있었을듯.
찾아낸 답은 ret이 있는 main의 주소로 다시 점프하는 것이다
ret은 pop eip, jmp eip 의 역할을 하므로 리턴까지 읽은 esp가 그 다음 4바이트로 다시 점프할 것이다.
결국 페이로드는 매우 간단하게 (a*44 || ret의 주소 || 리턴할 주소)
이렇게 된다.
gdb를 이용해 ret의 주소가 0x0804851e인것을 확인하고..
환경변수에 놉과 쉘코드를 넣고 주소를 구해준다. 0xbfffd83a에서 시작하는데 5000정도 더해서 0xbfffea15정도로 점프해주자.
완성된 페이로드는
./assassin `python -c 'print "a"*44+"\x1e\x85\x04\x08"+"\x15\xea\xff\xbf"'`
성공!
끝
'해킹 > LOB' 카테고리의 다른 글
LOB_17.zombie_assassin->succubus (0) | 2016.02.01 |
---|---|
LOB_16.assassin->zombie_assassin (0) | 2016.01.31 |
LOB_14.bugbear->giant (0) | 2016.01.31 |
LOB_번외.bash2의 함정. (0) | 2016.01.29 |
LOB_13.darkknight->bugbear (0) | 2016.01.29 |