现代漏洞利用使用不同的技术来绕过 ASLR。某些 IE 漏洞利用中使用的技术之一是使用 BSTR 覆盖泄漏内存。
攻击者如何泄漏内存,他如何使用它来有效绕过 ASLR?
现代漏洞利用使用不同的技术来绕过 ASLR。某些 IE 漏洞利用中使用的技术之一是使用 BSTR 覆盖泄漏内存。
攻击者如何泄漏内存,他如何使用它来有效绕过 ASLR?
这是BSTR在内存中的表示方式:
Length
Data string
Terminator
所以攻击者会尝试获得一个对齐的 heapspray,然后触发一个漏洞来修改 BSTR 的 Length 部分,它可以是:
那么 BSTR 的长度将如此之大,以至于您可以读取一大块内存,其中仅包含指向 DLLS 的指针,从中您可以获得这些 DLLS 的基地址,然后 BOOM!ASLR 绕过!
使用GetModuleHandle()
来获取模块和偏移的基址。偏移量只是current address - base address
.