CVE-2012-1876 漏洞分析报告 启明星辰安全研究团队 漏洞分析: 先来看看网上流传的能够触发漏洞的网页代码   function over_trigger() { var obj_col = document
getElementById("132"); obj_col
width = "42765"; obj_col
span = 888; } setTimeout("over_trigger();",10000); 为了便于调试,我们将设定的时间差值改为10 秒 运行该段代码会出现如下效果 两次崩溃的地点不同,但从不同的两次崩溃中我们可以找到相同点,类似于4141 这样的数值好像都会出现
从这样的现象中可以猜测可能是堆溢出造成的
再次查看网页代码
查看可能是哪里出现的问题
在 settimeout 里面设定了一个函数,该函数应该是最终触发漏洞的函数
很明显,在该函数中,增加了 Col 对象的 Span 值
在 CreateElement 函数上下断点,看该网页文件到底创建了什么对象
最终发现除了HtmlElement,BodyElement 这些基本的对象之外还创建了 CTableElement,CTableColElement
这里 CTableElement 是对应的列表框对象,CTableColElement 是列表框里面的列对象
这里的 Span 值便是列的数目
相关结构如下 CTableLayout 对象 偏移 0x54 Spancount 偏移 0x78 CImplPtrAry 对象(Col 类型的 CTableColElement 集合) 偏移 0x90 CImplPtrAry 对象(其偏移 0xC 为 TableCol 对象的 StyleStructArray 指针) 偏移 0x138 CImplPtrAry 对象(ColGro