(阅读次数:

windows溢出随笔


1.一般栈溢出比堆溢出更容易利用,也更稳定 2.在决定动手写一个通用shellcode之前,最好先在各种windows版本下把漏洞分析一遍,包括win2k、xp、2003,各种语言版本,不同的sp版本可能漏洞症状也不同 3.不要试图在不同版本的windows里寻找不同跳转方式的相同地址,就是说,不要在win2ksp4简体中文版里的某个进程里搜索所有的jmp esp(ff,e4)的地址,在winxpsp1英文版里的某个进程里搜索所有的push esp,ret(54,c3)的地址,然后妄图比较出一个相同的地址。除非是加载在0x00400000位置的进程 4.如果用覆盖异常的方式接管指令,要注意到xp和2k是不同的。如果要写通用程序,最好用pop,pop,ret的方式,xp下不能用类似jmp ebx的方式。 5.如果要先搜索内存里的shellcode,先接管异常。xp不允许执行栈中的代码,所以需要在异常处理链里写入另一个跳转地址,再返回到栈中。或者之前就是通过覆盖异常的方式接管指令的话,现在可以直接利用了。 6.UNICODE编码比较麻烦,最好能绕过去。绕不过去时,XOR 99是个比较通用的方法 7.指令跳转只能依靠这几种指令:jmp,call,ret。绝大部分漏洞都只能尝试寻找这些指令地址 8.除了esp,ebx,还有其他方法可以定位shellcode,分析漏洞时,不妨把当时的所有寄存器都看一遍,有时保存在堆栈里的地址更有用。把上下文的调用函数也看一遍,利用它们定位可能效果更好 9.栈溢出时,如果能覆盖到ret但离溢出点太远且不能尽快跳过去,尝试覆盖异常,如果异常地址也很远不能覆盖到,试试其他方法(格式化字符串溢出?)或放弃 10.分析完一个漏洞后,写合适的shellcode往往是最难的,限制远比你想像的多,每个漏洞的利用都是耐心和创造力的考验 11.穷途末路时,先去睡一觉 :-) 。有想法时,不要想当然,任何问题都可能发生,一定要实验证明。

分享收藏到:  新浪ViVi 365Key网摘 Google书签 Windows Live Yahoo书签 添加到百度搜藏
上一篇:获得进程的EPROCESS   下一篇:SQLServer应用程序中的高级SQL注入
[本文源自互联网,版权归原作者,转摘为学习参考使用]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
匿名评论
 
数据挖掘论坛导航
资讯点击排行帮
相关资讯
数据挖掘论坛资讯

关于我们  - 网站地图 - 联系方式 - 版权申明 - 友情链接 - 使用帮助
数据挖掘研究院(www.ChinaKDD.com)
增值电信业务经营许可证编号:皖B2-20040042 文网文:[2005]027号