metasploit进行漏洞利用过程中,发现中文版xp_sp3会exploit失败,而英文版本可以,对比后发现是因为xp_sp3中文版系统rop的地址不对。
由来:
- 之前用metasploit IE8在xp_sp3试验时,中文版系统一直不成功。后来找了些资料,发现是因为msvcrt.dll版本问题导致的。在操作windbg后,手动找到了对应的指令(没使用mona)。具体的解决方法为:
- 修改msf目录下ropdb下的msvcrt.xml中的rop链。一共为3条
基地址改为77be0000即改为base=“0x77be0000”
其实其他的偏移地址是不变的,按地址统一改成该地址基地址就可以了。
- 剩下的两条为倒数两条指令
offset=“0x00143ad9” PUSHAD #retn ....
offset=“0x00041025” ptr to 'push esp #ret
可以将ie进程附加后,具体反汇编看看
- 上面修改的只是msf通用的rop,最后一步是要修改具体的exploit中的地址,msf将rop链分开了吧
比如在msf找到ms13-090 exp,找到对应xp_sp3的stack_pivot,将其中的指令分别修改为0x77dfd801以及0x77be5ed5.
希望对大家研究UAF漏洞有用。
ps:这篇是我2014年6月发布在CSDN,地址,当时应该是msf3或4吧,现在win7都快停更了...不清楚现在msf5有没有解决这个问题。