标签:一个 内存 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