现代漏洞利用不同的技术绕过ASLR。某些IE漏洞利用中的一种技术是使用BSTR覆盖来泄漏内存。

攻击者如何泄漏内存,以及他如何使用它有效绕过ASLR? />

#1 楼

这就是BSTR在内存中的表示方式:一个BSTR,可能是:


堆溢出。
释放后使用会崩溃,该指令在可以修改受控内存地址(例如AND 0xFFFFFFFF,edi)的指令上崩溃edi由攻击者控制,并指向BSTR长度字段
等。

,那么BSTR的长度将是如此之大,以至于您可以读取一大块内存,其中仅指向DLLS的指针,从中您将获得这些DLLS的基地址,然后弹出!绕过ASLR!

评论


太棒了谢谢。您能举一个使用这种技术的例子吗?如果可能的话,请提供给我一个伪代码,可以使用这种技术在Windows上演示ASLR绕过吗?非常感谢你。

–john4tech
2014年5月26日14:30

#2 楼

使用GetModuleHandle()获取模块的基址和偏移量。
偏移量仅为current address - base address

评论


但是,为了调用GetModuleHandle(),我们需要首先绕过DEP。要绕过DEP,我们需要首先绕过ASLR。让我知道GetModuleHandle()在哪种情况下有效?

–john4tech
2014年5月28日下午6:32