首页
社区
课程
招聘
[求助]请教metasploit生成shellcode,测试失败...
发表于: 2013-2-21 22:36 12673

[求助]请教metasploit生成shellcode,测试失败...

2013-2-21 22:36
12673
我想测试metasploit,顺便学习下其中的shellcode:
msf  exploit(ms08_067_netapi) > use windows/messagebox
msf  payload(messagebox) > show options

Module options (payload/windows/messagebox):

   Name      Current Setting   Required  Description
   ----      ---------------   --------  -----------
   EXITFUNC  process           yes       Exit technique: seh, thread, process, none
   ICON      NO                yes       Icon type can be NO, ERROR, INFORMATION, WARNING or QUESTION
   TEXT      Hello, from MSF!  yes       Messagebox Text (max 255 chars)
   TITLE     MessageBox        yes       Messagebox Title (max 255 chars)

msf  payload(messagebox) > generate -t c
/*
 * windows/messagebox - 270 bytes
 * http://www.metasploit.com
 * VERBOSE=false, EXITFUNC=process, TITLE=MessageBox,
 * TEXT=Hello, from MSF!, ICON=NO
 */
unsigned char buf[] =
"\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9\x64\x8b"
"\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08\x8b\x7e\x20\x8b"
"\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1\xff\xe1\x60\x8b\x6c\x24"
"\x24\x8b\x45\x3c\x8b\x54\x28\x78\x01\xea\x8b\x4a\x18\x8b\x5a"
"\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01\xee\x31\xff\x31\xc0"
"\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c"
"\x24\x28\x75\xe1\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a"
"\x1c\x01\xeb\x8b\x04\x8b\x01\xe8\x89\x44\x24\x1c\x61\xc3\xb2"
"\x08\x29\xd4\x89\xe5\x89\xc2\x68\x8e\x4e\x0e\xec\x52\xe8\x9f"
"\xff\xff\xff\x89\x45\x04\xbb\x7e\xd8\xe2\x73\x87\x1c\x24\x52"
"\xe8\x8e\xff\xff\xff\x89\x45\x08\x68\x6c\x6c\x20\x41\x68\x33"
"\x32\x2e\x64\x68\x75\x73\x65\x72\x88\x5c\x24\x0a\x89\xe6\x56"
"\xff\x55\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c\x24\x52"
"\xe8\x61\xff\xff\xff\x68\x6f\x78\x58\x20\x68\x61\x67\x65\x42"
"\x68\x4d\x65\x73\x73\x31\xdb\x88\x5c\x24\x0a\x89\xe3\x68\x58"
"\x20\x20\x20\x68\x4d\x53\x46\x21\x68\x72\x6f\x6d\x20\x68\x6f"
"\x2c\x20\x66\x68\x48\x65\x6c\x6c\x31\xc9\x88\x4c\x24\x10\x89"
"\xe1\x31\xd2\x52\x53\x51\x52\xff\xd0\x31\xc0\x50\xff\x55\x08";

如上,我想测试下,这个messagebox是否会弹出一个对话框。我是这样测试的:
unsigned char shellcode[] =
"\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9\x64\x8b"
"\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08\x8b\x7e\x20\x8b"
"\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1\xff\xe1\x60\x8b\x6c\x24"
"\x24\x8b\x45\x3c\x8b\x54\x28\x78\x01\xea\x8b\x4a\x18\x8b\x5a"
"\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01\xee\x31\xff\x31\xc0"
"\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c"
"\x24\x28\x75\xe1\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a"
"\x1c\x01\xeb\x8b\x04\x8b\x01\xe8\x89\x44\x24\x1c\x61\xc3\xb2"
"\x08\x29\xd4\x89\xe5\x89\xc2\x68\x8e\x4e\x0e\xec\x52\xe8\x9f"
"\xff\xff\xff\x89\x45\x04\xbb\x7e\xd8\xe2\x73\x87\x1c\x24\x52"
"\xe8\x8e\xff\xff\xff\x89\x45\x08\x68\x6c\x6c\x20\x41\x68\x33"
"\x32\x2e\x64\x68\x75\x73\x65\x72\x88\x5c\x24\x0a\x89\xe6\x56"
"\xff\x55\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c\x24\x52"
"\xe8\x61\xff\xff\xff\x68\x6f\x78\x58\x20\x68\x61\x67\x65\x42"
"\x68\x4d\x65\x73\x73\x31\xdb\x88\x5c\x24\x0a\x89\xe3\x68\x58"
"\x20\x20\x20\x68\x4d\x53\x46\x21\x68\x72\x6f\x6d\x20\x68\x6f"
"\x2c\x20\x66\x68\x48\x65\x6c\x6c\x31\xc9\x88\x4c\x24\x10\x89"
"\xe1\x31\xd2\x52\x53\x51\x52\xff\xd0\x31\xc0\x50\xff\x55\x08";

int main(int argc, char* argv[])
{
    __asm{
        lea eax,shellcode
        call eax
    }
	return 0;
}

但是,执行的时候会出现异常,shellcode的第一条命令fldpi就出现了异常:
.data:01383018 ; unsigned char * shellcode
.data:01383018 ?shellcode@@3PAEA proc near
.data:01383018
.data:01383018 var_C           = byte ptr -0Ch
.data:01383018
.data:01383018                 fldpi                ;执行到这里就出问题了...简单理解下了命令,糊涂....
.data:0138301A                 fstenv  [esp+var_C]
.data:0138301F                 xor     edx, edx
.data:01383021                 mov     dl, 77h
.data:01383023                 xor     ecx, ecx
.data:01383025                 mov     esi, fs:[ecx+30h]
.data:01383029                 mov     esi, [esi+0Ch]
.data:0138302C                 mov     esi, [esi+1Ch]

执行fldpi就出现异常,走不下去了... 为什么呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
data段,不可执行
2013-2-22 09:30
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
额,还真是的...我查来下xp2,win7这些都加了DEP。那我在win7下怎么可以快速的测试这个shellcode? 比如研究... 不能总跑xp0上去吧...请教...
2013-2-22 11:18
0
雪    币: 29
活跃值: (131)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
直接把你的DEP保护关掉,或者去虚拟机玩吧!
2013-2-22 11:23
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
额,除了 这两种办法,没有更好的?
2013-2-22 11:58
0
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
VirtualProtect一下~
2013-2-22 15:11
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
汗,那样后,还怎么学习shellcode...完全找罪受啊
2013-2-22 17:46
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
8
如此简单的问题,那是解密shell真正代码的开头部分,好好跟一下不要什么都问。那句指令只是为了获取当前位置,你可以nop掉,手工修改寄存器,继续执行。
2013-2-23 07:19
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你根本没细看我问题... .我的疑问是 我第一个指令都执行不了...上面的兄弟说了...是DEP的问题,我也回答了,经验证确实是DEP保护的结果....⊙﹏⊙b汗
2013-2-25 10:57
0
雪    币: 675
活跃值: (42)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
将shellcode 改成rop形式调用就好了
2013-2-26 08:18
0
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
那就直接把DEP关掉。
2013-2-26 11:41
0
雪    币: 2792
活跃值: (2588)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
#pragma comment(linker, "/section:.data,RWE")

这样行不行?
2013-2-26 11:53
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
13
高级程序猿通常是这么测试的,直线型思维
2013-2-26 17:27
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
可以!!! nice~~~!!!!!!!!!!!!
2013-3-1 11:10
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这种思维不好? 或者 推荐下 应该怎么改进?
2013-3-1 11:12
0
游客
登录 | 注册 方可回帖
返回
//