论坛: 黑客进阶 标题: 转帖[windows溢出随笔] 复制本贴地址    
作者: a_one [a_one]    论坛用户   登录
作者:不详


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.穷途末路时,先去睡一觉 :-) 。有想法时,不要想当然,任何问题都可能发生,一定要实验证明。



[此贴被 消毒药水(a_one) 在 06月23日10时10分 编辑过]

地主 发表时间: 04-06-10 15:54

回复: lijingxi [lijingxi]   见习版主   登录


B1层 发表时间: 04-06-11 17:05

回复: xjliuwei [xjliuwei]   论坛用户   登录
看了

B2层 发表时间: 04-06-11 19:18

回复: tianya2003 [tianya2003]   论坛用户   登录
t

B3层 发表时间: 04-06-12 15:19

回复: snowred [snowred]   论坛用户   登录
看了……
但是不懂~~~~~

B4层 发表时间: 04-06-19 11:08

回复: fame [fame]   论坛用户   登录
转载人家的文章要署名的

B5层 发表时间: 04-06-22 10:52

回复: a_one [a_one]   论坛用户   登录
谢谢提醒

B6层 发表时间: 04-06-23 10:11

回复: battle [battle]   论坛用户   登录


B7层 发表时间: 04-06-25 17:59

论坛: 黑客进阶

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号