对CVE-2012-1876利用的疑惑

昨天在exploit-db上看到了这个漏洞的利用exp http://www.exploit-db.com/exploits/20174/ ,之前仅分析了漏洞的成因,但毕竟最精彩的部分是漏洞利用的技巧。
对这个漏洞的利用我有一点不太理解的地方,希望可以和大家共同讨论
POC中:
for (var i=0; i < 500; i+=2) {
                        rra = dap.substring(0, (0x100-6)/2);
                        arr = padding.substring(0, (0x100-6)/2);
                        arr[i+1] = filler.substring(0, (0x100-6)/2);
                        var obj = document.createElement("button");
                        div_container.appendChild(obj);
}

这段代码的作用是在内存中连续分配形如: EEEE(0x100)+AAAA(0x100)+BBBB(0x100)+CButtonLayout(0x100) 这样的内存块,然后

for (var i=0; i<500; i+=2 ) {
                        rra = null;
                        CollectGarbage();
}

就把上述某些内存块中的EEEE(0x100)这部分内存释放了,而这释放的内存又恰好在mshtml!CTableLayout::CalculateMinMax通过EnsureSizeWorker重新分配了!使得攻击者可溢出的内存块后面0x200处恰好有一个CButtonLayout对象......
不理解的地方就在于EnsureSizeWorker分配内存,为什么恰好在EEEE(0x100)这部分内存释放之后?

这漏洞据说可以通过内存leak来获取模块基址来绕过ASLR,不知道有代码没?

TOP

ie内存分配是先出先进的算法啊  先释放0x100的内存,紧接着申请0x100内存,会刚好申请到释放的位置

TOP

谢谢我的朋友

TOP

这个怎么利用不知道 能讲下吗

TOP

这个poc是针对ie8的吗?

TOP