CVE-2013-2729 Adobe Reader和Acrobat 数字错误漏洞

  这个洞是在论坛里看到的,感觉很有意思,来学习一下。个人感觉IE或者说是浏览器的洞和Adobe洞都是比较难调的,主要是有大量的类难以摸清之间的关系。

  这个洞是一个整数溢出的洞,这个不是重点。重点是利用的思路,利用思路是挖坑法,即所谓的make hole,通过挖坑来泄漏dll的基址,然后再加以利用。make hole并不是独门绝技,这种方法在IE和Adobe的漏洞利用中都有出现(主要是因为可以嵌入js,实现自由分配内存?),但是我觉得这种方法还是很巧妙的,就像大牛说的是一种比较优雅的手法。尤其是对内存的精准控制,个人感觉是一种艺术:)

   

漏洞的关键点如图所示,xpos和ypos的来自于pdf文件中,其中如果xpos在文件中的初始值为0xff那么经过运算后为可控制为0xFFFFFFF8

而这里xpos是当作有符号数来运算的,就是说有符号数发生了上溢成了负数(注意,此堆块称为texture)。下面来看exp作者是怎么利用这个整数溢出的。

作者首先控制texture的大小为0x130字节(texture大小可由xpos和ypos控制),然后在内存中利用js分配大量的0x130个字节大小的字符串对象,然后间隔的释放字符串对象实现挖坑。这时texture就会落在坑中。通过整数溢出向此堆头的8个字节写入,致使reader释放了前一个0x130大小的字符串对象。然后reader会创建一个0x130大小的imgstruct,这个结构中包含有虚表指针。由于js在分配字符串对象时保有指针,那么这时就可以直接读出虚表地址。通过虚表地址可以获得AcroRd32.dll模块的基址,这就实现了绕过aslr。然后通过释放imgstruct的内存,再在poc中分配布置了伪虚表的堆块来占位,通过js语句使reader调用imgstruct的虚表实现控制了EIP。然后利用就是换栈的堆喷了。最后附一张大牛写的总结

 

转载于:https://www.cnblogs.com/Ox9A82/p/5771005.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值