BUUCTF----jarvisoj_level3_x64

环境:WSL2,ubuntu16.04,python2

checksec文件:
在这里插入图片描述
这道题level3的思路一样,只是32位的程序改成了64位。
也就是说,在利用write函数泄露出libc的基地址时,需要用到寄存器来穿参数,write有三个参数,所以需要rdi,rsi,rdx三个寄存器,通过命令:

ROPgadget --binary level3_x64 |grep "pop"

结果:
在这里插入图片描述
从图中可以看到只找到了rdi和rsi寄存器,没有rdx寄存器

尝试gdb程序:
在这里插入图片描述
在read函数下断点,可以看到rdx的值为0x340,而write函数的地址小于0x340,也就是说我们可以不用修改write函数的第三个参数,即write函数的字段长度的那个参数。即rsi和rdi两个寄存器就足够

payload = (0x80+0x08)*'a'+p64(rdi)+p64(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值