首页
社区
课程
招聘
[求助]关于对堆喷射的一点疑惑
发表于: 2016-3-30 16:20 4878

[求助]关于对堆喷射的一点疑惑

2016-3-30 16:20
4878
最近正在研究堆喷射和堆风水;
按照我对它的理解,大体思路应该是,预先通过分配堆内存的一些规律,提前在某个地址上布置好shellCode, 在没有DEP的情况下,就可以通过其他的漏洞让程序执行到shellCode上;

那么问题来了,我们在程序中分配堆内存的时候,都是可以直接获取到分配的内存的地址的,为什么不直接把shellCode写入堆内存,然后把程序执行流指向这个堆的地址呢?

感觉有什么地方被我疏漏了,求各位指导

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 677
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也是刚入门,说错了请轻喷

修改程序执行流应该是指程序运行时动态修改下一个指令的执行位置吧,EIP/RIP寄存器难道可以在程序执行时自己修改吗?
2016-3-30 16:35
0
雪    币: 191
活跃值: (848)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
我们可以利用js等分配内存,但是我们不能控制EIP。想直接jmp 0x0c0c0c0c?你想多了
2016-3-30 19:46
0
雪    币: 27
活跃值: (622)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
heap spray 只是布置我们的数据(sc)  并不能直接搞了EIP
2016-3-30 20:02
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我的意思是,为什么需要用堆喷射这种手段来布置shellCode?  直接malloc,然后就可以获取到分配的堆的内存的指针, 在这个堆内存上本身就可以布置数据。
2016-3-30 20:23
0
雪    币: 44
活跃值: (34)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
首先明确一点,堆喷射仅是来布置shellcode的,并不是来溢出的。感觉你的意思是想在能控制EIP的情况下,malloc一块空间,填充shellcode,然后执行shellcode,你这是整体的利用,其实这儿你可以自己发挥了,你用堆喷也好,自己分配也罢,总之你能把shellcode放到可以执行的地方去就行,ps 建议你可以去参考0day第12章,里面有分配空间然后利用的例子,写的比较详细了。
2016-3-31 00:35
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢回复,马上看一下这本书~
这个主题的问题其实是,堆喷的目标就是布置shellCode,这点自己分配内存也可以做到;
既然堆喷可以,自己分配也可以,那么进行堆喷这样一个相对复杂的操作的意义在哪里呢?
2016-3-31 01:15
0
雪    币: 44
活跃值: (34)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
因为有些时候一些进程的内存环境非常复杂,我们很难能在里面精确申请空间并且布置好我们完整的shellcode。
2016-3-31 07:53
0
游客
登录 | 注册 方可回帖
返回
//