之前写过一篇青少年版的Heap Spray:Heap Spray浅析 MS06-055 当时没觉得Heap Spray的强大之处,直到尝试超星4.0的ActiveX的漏洞挖掘与利用,才惊觉Heap Spray的强大与浏览器漏洞的危害。
0x00 COMRaider
一个ActiveX的Fuzz工具,IDE方便上手。(疑似碰到unicode字符串转换的问题,后来又莫名其妙好了,mark一下)
0x01 你根本不是这样的qmemcpy!
心路历程:
1.崩不了?崩不了?最后扛着COMRaider自己挖,然后发现是clsid找错了
2.其实这是就发现隐隐约约哪里有些奇怪,当时归因于自己对javascript的语法不了解。究其原因就是自己照书打谱惯了在sp2上玩惯了,思维僵化。
3.覆盖返回地址的时候顿显端倪,有的地址可以,有的地址就会被魔改?仍然以为是unicode的问题。乐此不疲栈溢出,shellcode被魔改。
4.最后偷瞄书,heap spray?!放到堆里就不会被魔改了哦,同时意识到ActiveX漏洞危害大的原因之一就在于可以用javascript之类的脚本语言进行很多操作,就比如这里堆的申请。
回过头再看,原来LoadPage输入的数据会经过一个WideCharToMultibyte()函数进行魔改。由于ascii支持的范围是0x00-0x7f,所以0x7f-0xff的数据就会发生无法转码的情况。