本文主要是介绍数组越界溢出利用2--修改前方的某个字符串的长度位,将长度位改为较大数值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://bbs.pediy.com/archive/index.php?t-155555.html
利用该数组越界漏洞,更改option cache前方的某个字符串的长度位,将长度位改为较大数值,这样该字符串就可以读取该字符串后面的所有数据,因为长度没有限制。通过获得该功能,先将该字符串所在虚拟空间的准确位置测算出。通过获得的准确位置和内存任意地址读取功能,获得刚才option数组的基地址。到此为止通过该漏洞已经具备了:从任意给定地址中读取数据和向任意给定地址中写入固定数据的功能。
通过获得的准确位置和内存任意地址读取功能,读取飞地中的ntdll.dll函数地址,进而获得ntdll.dll模块的基地址。为rop chain做铺垫。
通过获得的准确位置和内存任意地址读取功能,读取option对象的虚函数表的基地址,进而获得mshtml.dll模块的基地址。为rop chain做铺垫。(可选)
具备了读写功能后,伪造对象,来触发漏洞。具体为:使用optarray中的option的指针来替换option cache中的option元素中的CTreeNode指针,然后立即删除该option元素,导致原CTreeNode指针的位置指向的内存是释放内存,然后使用恶意数据填充到该内存处。
这篇关于数组越界溢出利用2--修改前方的某个字符串的长度位,将长度位改为较大数值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!