码迷,mamicode.com
首页 > 其他好文 > 详细

Heap Spray:堆与栈的协同攻击

时间:2017-11-16 16:23:10      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:一个   内存   png   ima   shell   image   特殊   利用   asc   

1:应用场景
在针对浏览器的攻击中,常常会结合使用堆和栈协同利用漏洞。
(1)当浏览器或其使用的ActiveX 控件中存在溢出漏洞时,攻击者就可以生成一个特殊的HTML
文件来触发这个漏洞。
(2)不管是堆溢出还是栈溢出,漏洞触发后最终能够获得EIP。
(3)有时我们可能很难在浏览器中复杂的内存环境下布置完整的shellcode。
(4)页面中的JavaScript 可以申请堆内存,因此,把shellcode 通过JavaScript 布置在堆中
成为可能。
 
2:原理
 
在使用Heap Spray 的时候,一般会将EIP 指向堆区的0x0C0C0C0C 位置,然后用JavaScript
申请大量堆内存,并用包含着0x90 和shellcode(1M内存的尾部) 的“内存片(1M)”覆盖这些内存。
通常,JavaScript 会从内存低址向高址分配内存,因此申请的内存超过200MB(200MB=200
×1024×1024 = 0x0C800000 > 0x0C0C0C0C)后,0x0C0C0C0C 将被含有shellcode 的内存片覆
盖。只要内存片中的0x90 能够命中0x0C0C0C0C 的位置,shellcode 就能最终得到执行。
 
技术分享
 
1M内存片
 
3:解释
1:为什么用0x0c0c0c0c而不是更小的位置?
因为堆的增长方向是想高地址,所以,越高的地址在申请之前被程序占用的可能性小。
 
2:为什么是200M?
200MB=200×1024×1024 = 0x0C800000 > 0x0C0C0C0C

Heap Spray:堆与栈的协同攻击

标签:一个   内存   png   ima   shell   image   特殊   利用   asc   

原文地址:http://www.cnblogs.com/banchen/p/7844845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!