【文章标题】: 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期正式班报名火爆招生中!!!