metasploit进行漏洞利用过程中,发现中文版xp_sp3会exploit失败,而英文版本可以,对比后发现是因为xp_sp3中文版系统rop的地址不对。

由来:

  • 之前用metasploit IE8在xp_sp3试验时,中文版系统一直不成功。后来找了些资料,发现是因为msvcrt.dll版本问题导致的。在操作windbg后,手动找到了对应的指令(没使用mona)。具体的解决方法为:
  1. 修改msf目录下ropdb下的msvcrt.xml中的rop链。一共为3条

基地址改为77be0000即改为base=“0x77be0000”

其实其他的偏移地址是不变的,按地址统一改成该地址基地址就可以了。

  1. 剩下的两条为倒数两条指令
offset=0x00143ad9PUSHAD #retn ....

offset=0x00041025”  ptr to 'push esp  #ret 

可以将ie进程附加后,具体反汇编看看

  1. 上面修改的只是msf通用的rop,最后一步是要修改具体的exploit中的地址,msf将rop链分开了吧

比如在msf找到ms13-090 exp,找到对应xp_sp3的stack_pivot,将其中的指令分别修改为0x77dfd801以及0x77be5ed5.

希望对大家研究UAF漏洞有用。

ps:这篇是我2014年6月发布在CSDN,地址,当时应该是msf3或4吧,现在win7都快停更了...不清楚现在msf5有没有解决这个问题。