bof


하핳 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 이다.




'pwnable > 기타' 카테고리의 다른 글

songsari's prob2 (Command Injection)  (0) 2016.09.10
songsari's prob1 (MEMORY_LEAK)  (0) 2016.09.10
Format string  (0) 2016.08.09
echo is what?  (0) 2016.08.09
RTL 기법 실습  (0) 2016.07.16

+ Recent posts