思路
关于CVE-2015-3824漏洞本身
漏洞的原理是一个因为整数溢出,可以构造堆利用。
https://bbs.pediy.com/thread-222893.htm
在进行漏洞利用时,要关注各种可能分配内存的地方,灵活的使用代码中的内存分配,来布局内存。 同时研究一个漏洞要把相关知识给补齐。对于这个漏洞就是 MPEG4的文件格式和相关的处理代码了。
谷歌的exp
gp0是构造对象,然后溢出它的虚表,重定向到我们的gadaget。
进行大量的heap spray,保证能够执行到gadaget。
Metaphor
另外有一个Metaphor,是CVE-2015-3824的利用工具,
攻击载荷:Web页面(可执行js代码),受害者需要在exp页面上驻留一会(heap spray需要多次尝试)
关于虚表
(1)识别构造函数:给对象分配内存、将vtable拷贝到分配内存中、成员变量初始化。
(2)识别真正的vtable:vtable一定会在某个构造函数中被引用到,所以被引用到的就是真正的vtable。