漏洞利用—堆喷

1.堆喷的原理主要在于申请大量内存,直到跨过0x0C0C0C0C地址为止。
0x0C0C0C0C地址的总长为19210241024大小。所以只要申请的内存超过200MB,即可将0x0C0C0C0C地址包含在我们自己的内存之中。
在这里插入图片描述

2.当0x0C0C0C0C地址被包含在我们申请的堆中时,我们就可以将栈溢出的返回地址覆盖为0x0C0C0C0C。
3.此时发生溢出后,系统的eip就会去执行0x0C0C0C0C处的代码。而此时,我们的最终目的是执行shellcode代码。执行0x0C0C0C0C是不可能刚好命中shellcode代码的。所以我们需要将堆的无用内容全部填充为0x0C0C0C0C数据,然后再将shellcode代码复制到最末尾。这样再执行0x0C0C0C0C处指令时就会出现下面的情况。
在这里插入图片描述

这些指令全都是些无意义指令,所以会一直向下执行,直到执行shellcode为止。而这些无意义的指令就被称为滑块。如下图:
在这里插入图片描述

4.如果仅仅是上面这样的方式,等执行到shellcode都不知道什么时候了,而且中途也可能发生各种异常。于是我们可以将整个过程进行切片,将200MB的内存划分为200份,然后每一份的末尾都包含一个shellcode。这样就会大大减少滑块数量。
在这里插入图片描述

5.像这样的一种机制就称为堆喷。而且他的影响不仅仅是栈返回地址覆盖。同样也会影响到其他的指令。因为堆的地址范围极大,如果其他指令也可能会意外引用到堆中的地址,那么同样会执行到shellcode代码。所以这种堆喷非常暴力,而且也能大大增加漏洞利用概率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤月丶星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值