bof 원정대의 vampire 를 잡아보자!

생각보다 쉬운 문제이다.

먼저 소스코드를 분석해보자!



(소스코드)



소스코드를 보면 ret 주소가 bf로 시작하되 그 다음이 ff면 안된다.

그렇다면 주소를 낮춰주어야한다. 전에 문제를 풀면서 인자가 길어지거나 프로그램명(이것도 인자니까)이 길어지면 주소가 내려가는 것을 확인할 수 있었다.

즉 이걸 이용해서 주소를 ff가 아니도록 낮춰볼 것이다. 가볍게 5000 바이트의 Nop을 달면서 시작해보자!



(Nop 5000바이트)



주소가 0xbfffe7@@ 대역으로 왔다.
많이 낮춰졌지만 우리의 목표에는 멀다 더 낮춰야한다.

100000 바이트를 줘보자!



(100000 바이트 Nop)


주소가 눈에 띄게 낮아졌다. 0xbffe@@@@ 대역으로 낮춰졌다. 이정도면 충분하니 0xbffe@@ 대역의 주소를 ret 주소로 넣고 Nop 코드 뒤에 쉘코드를 붙여서 실행하면 가볍게 공격에 성공할 수 있을 것 같다.



(공격 성공)



직접 해보니 쉘을 획득 할 수 있었다. :)


'WarGame > 500 Project' 카테고리의 다른 글

(27/500) Lord of the BOF - golem  (0) 2017.06.20
(26/500) Lord of the BOF - skeleton  (0) 2017.06.20
(24/500) Lord of the BOF - troll  (0) 2017.06.20
(23/500) Lord of the BOF - orge  (0) 2017.06.20
(22/500) Lord of the BOF - darkelf  (0) 2017.06.20

+ Recent posts