pwnable/기타
RTL 심화
secretpack
2016. 8. 9. 03:30
하핳 56바이트 만큼 떨어져 있구나.
하지만 덮어보니 segmentation fault 가 뜨지 않았다.
흠 더미값이 있는것 같다
4바이트 8바이트 12바이트 계속 더해서 세그폴트가 뜨는 곳을 찾아보자.
72byte를 덮어주니 eip가 덮인 것을 확인할 수 있다.
우리는 이 문제를 풀기 위해 bss 영역에 대해서 알 필요가 있다.
bss영역은 한마디로 초기화를 해주지 않은 변수가 들어가는 영역이다.
흠 이제 RTL을 이용하여 우회해보자.
gets를 리턴시키기 위해 bss 를 인자로 받게끔 넣어준다.
그 뒤에 쉘코드를 넣어주면? 쉘이 나올것 같다. 한번 넣어주자.
0x804A020 이 bss 영역의 주소이다
여기서 20은 공백을 의미하므로 30으로 바꿔넣어주자
gets 함수의 주소는 0x080482f0이다
이제 익스플로잇을 해보자.
익스플로잇에 사용할 쉘코드는
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80 이다.