非栈上格式化漏洞和手动rop链构造

一般来说,栈上的格式化字符串漏洞利用步骤是先泄露地址,包括ELF程序地址和libc地址;然后将需要改写的GOT表地址直接传到栈上,同时利用%c%n的方法改写入system或one_gadget地址,最后就是劫持流程。但是对于BSS段或是堆上格式化字符串,无法直接将想要改写的地址指针放置在栈上,也就没办法实现任意地址写。下面介绍一下常用的非栈上格式化字符串漏洞的利用方法。

上个例题:

60b8be0f53de474f9bcc517361576a78.png

首先需要得到当前栈的地址和libc的基地址,这些地址可以很轻松的在栈上找到,其中esp+0x28存放了栈地址,esp+0x28存放了libc的地址,可以得到分别是第个参数和第个参数,直接传入%45$p%47$p即可得到栈地址和libc地址。

e7f39bf83e44405fb801f0530d5aa1c6.png

e54b4a2fb75d4140a1e5dba6f605459a.png

254cff7a6fd64ca5a908f730740bd82d.png

这里打印出地址

c2f88ee0c778405384b0ce92496db48a.png

4df68bf09df04afea189ba4e6c65ca7e.png

再次运行write_address0x7f38d46e4b01写上one_gadget地址

a6eca9965a9643b3a7e93d65e9e9e120.png

调试完可以看到成功打通

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值