level17

해커스쿨 FTZ 2018. 4. 2. 18:51

level17은 지금까지 푼 BOF문제(level11~)중에 가장 빠르고 쉽게 풀었던 것 같다.


코드를 분석하자면 *call이 printit함수의 주소를 가리키고, fgets에서 입력을 받은뒤 call을 실행하는 구조이다.



main을 disassemble해보니 이번에도 역시 ebp-16이 보이는걸 알 수 있다.

이번에도 역시 40자리를 A로 채우고 그 뒤의 ret을 오버플로우 하면 되는 것으로 보인다.


이번엔 코드 내부에 /bin/sh를 실행하는 코드가 없으므로 쉘코드를 환경변수로 만들었다.



그리고 이 환경변수의 주소를 알아보기 위해 간단한 코드를 짰다.




gcc로 컴파일 한 후 실행해 보니



이 환경변수의 주소가 0xbffffc2e인것을 알 수 있었다.


따라서 40자를 채운 후 이 환경변수로 ret을 바꾸면 쉘을 얻을 수 있다.



'해커스쿨 FTZ' 카테고리의 다른 글

level19  (0) 2018.04.03
level18  (0) 2018.04.02
level16  (0) 2018.04.02
LEVEL15  (0) 2018.03.29
level14  (0) 2018.03.28
블로그 이미지

천재보다는 범재

,