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 |