首页
社区
课程
招聘
[原创]0day一书的学习心得
发表于: 2008-7-31 18:58 35276

[原创]0day一书的学习心得

2008-7-31 18:58
35276

0day一书的学习心得

写的很乱,凑合着看吧,也许要既看过书又做了Exploit比赛题目同时还是菜鸟的人才会和我有同感,呵呵.

failwest这本书深入浅出,对前沿技术领域总是有自己独特的见解,很让人回味,这使学习的过程变成了一种享受,看完后还有种余犹未尽的感觉,忍不住感叹,要是能再增加一倍的容量就好了.也许不久之后,在漏洞领域failwest这本书就同Win32编程领域的<<Windows程序设计>>一样将成为经典之作.:)

书看完了,例子也做了,我就想着自己怎么样开始实践呢?看到论坛上有去年Explit大赛的专题,于是就把A和B两道题都下载了,决定先不看答案,尝试看自己能不能做出来?

先做A题,发现还是很简单的,加上说明文档里已经说了这是个服务器端程序,所以用IDA打开来一看,很快就看到溢出的地方,典型的栈缓冲区溢出,栈空间是200字节,但却可以拷贝最大512字节的内容,马上联想到了书中所讲的有两种方法:
1) 把Shellcode布置在缓冲区前面,淹没返回地址为缓冲区地址,这样就能跳到Shellcode了;
2) 把Shellcode布置在缓冲区后面,淹没返回地址为jmp esp的地址,这样也能跳到Shellcode;
把代码写出来后在本机上运行,OD调试能够进入Shellcode,但调用到LoadLibrary老是异常,用OD单步跟踪还是莫名奇妙,于是放到虚拟机执行,结果Win2K和XP都能成功运行.后来猜想可能是卡巴斯基的问题,于是放到另外一台机器上运行,果然就成功了;

再做B题,是个Active控件,傻眼了,知道要用ComRaider,但书上没有实战例子,完全不知道怎样才能Fuzz出漏洞来,无奈放弃自己做的想法.于是下载了那些获得了名次的高手们的答案,正所谓开卷有益,果然又看到了很多猛料.:)

一开始我用ComRaider来Fuzz时老是弹出错误框,后来看了netwind写的才知道注册的DLL和打开的DLL必须是同一个路径,原来netwind也犯了和我一样的错误,哈哈.同时看netwind的A题答案还让我知道了A题的第3种方法,谢谢了!
3) 还是把Shellcode布置在缓冲区前面,在函数返回时ESP+4正好指向输入参数,所以淹没返回地址为retn指令的地址,这样还是能跳到Shellcode;这种方法不需要JMP或CALL,我想应该是最通用的办法了.

还有看nop的答案,成名多年的高手真是不同凡响,答案既有详尽的步骤又精炼,非常的专业,写出来的代码也是让人大开眼界,让人钦佩.我想在以后的时间内nop的代码会有很多参考之处.

看完书还有一个感觉就是做漏洞分析需要很广泛的知识,汇编是不用说了,还要懂各种脚本语言,Html,VbScript,Perl,Python,Ruby一样都不能少.还有COM,Active知识也要了解.
我只熟悉C和汇编,原来以为这样就足够了,现在看来,还需要学习再学习.

在MSF的网站上还得到一个MSF的中文手册,有需要的可以下载.


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (44)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵,楼主很用心。
2008-7-31 21:45
0
雪    币: 249
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
我也是只熟悉C和汇编,看了你的说明以后发现确实有“黑么多”的东西需要了解

搞这个 感觉 起点高,深入慢,需要耐心和毅力。
2008-7-31 21:48
0
雪    币: 197
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
和楼上的有同感!
2008-8-1 08:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LZ提到的第三种利用方式,偶还是不太明白啊。不过你的那本书,看了下目录,貌似很强大,谢谢了。

据说对数据文件结构也要了解下,不过这个可以临时参考的。
2008-8-1 09:19
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
6
不错,分析溢出涉及到的技术太多了,我目前想做的就是把HTML,JavaScript,Perl,Python,Ruby等语言全部了解一遍.
2008-8-4 10:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我也觉得netwind用一个retn指令做跳板确实很赞,不知道除了这个和通用的jmp寄存器外,还有没有其他用跳板的技巧?

2008-8-7 12:52
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
同感,刚开始试水,看了大家的一些帖子和心得,水好深呀
2008-8-7 14:19
0
雪    币: 222
活跃值: (478)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
9
回LSS,汇编指令中运行后修改了EIP的都可以
2008-8-17 16:50
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢LZ的资料!
2008-8-22 18:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好东西,谢稿分享
2008-8-27 14:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
溢出涉及到的技术太多了,这本书都翻烂了,刚又去买了一本......
2008-9-19 10:23
0
雪    币: 204
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢楼主啊
学习学习
2008-9-25 08:47
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
楼主是个有心人!
2008-9-27 22:02
0
雪    币: 204
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我还是初级的初级阶段 。。谢谢楼主分享感受。。
2008-10-11 02:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不懂,看看,只能搞定简单的
2008-10-13 20:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
感谢楼主分享
2008-10-18 01:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
总结不错。 正在学习
2008-10-18 21:57
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
不错不错,LZ有心机。
2008-11-21 23:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
向楼主学习,呵呵
2008-11-27 17:29
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我就更不用说了,刚开始学汇编。。难啊 。。头快暴了。。
2008-12-12 18:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
谢谢楼主的分享··············
2008-12-17 16:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
。。。。。。。。。。。支持
2008-12-19 17:10
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
感谢LZ分享,我是个新人,想在这里问一下前辈们的一些关于学习方法的问题,是先要把基础的学完,按部就班的看好呢?还是找本实例比较多的书,遇到不懂的问题在查好呢?
谢谢!
2008-12-26 16:54
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
25
我觉得这个可根据各人情况来。
方案一:基础扎实,但见效慢;方案二,见效快,有成就感;
如果有时间的话,我建议方案一,有句话叫欲速则不达。
2008-12-27 11:43
0
游客
登录 | 注册 方可回帖
返回
//