能力值:
(RANK:300 )
|
-
-
2 楼
写完了,好累啊!睡觉!呵呵!
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
进来膜拜,我的水平还看不懂
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
顶顶,明日看。。
|
能力值:
( LV5,RANK:69 )
|
-
-
5 楼
只有膜拜的份
|
能力值:
( LV9,RANK:220 )
|
-
-
6 楼
首先你加密代码也没有调用什么函数,怎么不用一些更通用的寄存器,例如edx。
加密代码可以在优化下,为何不考虑从后往前开始xor,这样就省了你的cmp判断了。
code2:
jmp code4
pop edx
mov eax, 090909090h
mov ecx, $3a -1
@@:
xor dword [edx+ecx*4], eax
loop @b
jmp _start
code4:
call code2
_start:
; shellcode
下面的压入字符串应该考虑采用call的形式
call @f
db '',0
@@:
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
楼上的名字我喜欢.....
|
能力值:
(RANK:300 )
|
-
-
8 楼
很好的建议,谢谢了。呵呵!
我只是想写个通俗易懂的shellcode,一是作笔记复习一下!另一个就是锻炼一下汇编。没有考虑到优化之类。顺便让比我更加怎么说呢...的同志们看看shellcode的运行过程。
再次说明,技术拙劣。高手指正!
|
能力值:
( LV12,RANK:230 )
|
-
-
9 楼
你测的哪个版本的Exploit?这个漏洞,据我所知,目前public了的Exploit以HDM的为最佳,就是metasploit里的那个rb脚本。我不知道你所说的原有shellcode运行很隐蔽是指什么?一般就那么几个跳转指令,比如攻击2003的,你在那个jmp esp的地址上下断点,然后esp指向的指令流,就是shellcode了,只不过一般会编编码什么的,没有什么隐蔽的吧。溢出成功这个就更好判断了,你用的是bindshell,那就在victim上查看相应的bindport是否listen中即可。远程连不上的原因太多,未能有效攻击是最大的可能。
|
能力值:
(RANK:520 )
|
-
-
10 楼
楼主说的shellcode隐蔽剧猜测可能是指
1.不能亲切地观察到shellcode被执行的过程吧
api断下后,进去慢慢跟吧
或者
2.shellcode 前面编码函数流程没明白,f8后shellcode执行完了,然后觉得隐蔽吧
连不上的原因比较多,可能exploit没执行成功,可能执行成功了,window防火墙开着,这时你可以试下换个反向连接的shellcode执行下.
另外我发现公布的exploit 好几个版本(metasploit除外没细看)都是
fun(".\\\\x\..\..\xxxxxxxx...",buffer[],1000,L"",&q,1);
这样执行bug函数时 如果L''" 这一项为空字符串,会把.\\\\x\..\..\xxxxxxxx... 连接到栈里的某个地址指向的内容后面,如果这个地址指的内容为空,那么可以顺利进行,如果不为空,就会失败,带有一定的随机性.
如果fun("\\x\..\..\xxxxxxxx...",buffer[],1000,L".",&q,1); 这样利用,则会吧L"."后面加\ 后接在\\x\..\..\xxxxxxxx... 前面,可以保证顺利进行
在metasploit 学会了饶过dep 但不知道那样的地址对同一补丁的操作系统会不会很通用
|
能力值:
( LV12,RANK:230 )
|
-
-
11 楼
这个你看错了吧。你看那个父函数的F5显示,你说的这个形参就是prefix,代码是有判断的
if ( NULL == prefix || !*prefix )
{
wcscat(...);
}
wcscpy(...);
如果prefix是空串或空指针,就不拼接了,后面还有显式的wcscpy()确保初始化局部变量。
对确定了的SP及语言版本的,还是很通用的。
|
能力值:
(RANK:300 )
|
-
-
12 楼
实际上不打算深究为什么shellcode没有能够连接上了!我重视的是shellcode是如何运行的!漏洞如何被利用了!我现在发现原理懂起来不难,但是经验很重要。要有足够是耐心调试程序,分析代码!我基础缺经验就更缺!
但是,楼上几位的讨论我很长见识!谢谢指教了!
我上面说的是很隐蔽是测试是不是成功我看不见!没有弹框来的简洁!
|
能力值:
( LV9,RANK:250 )
|
-
-
13 楼
如果求不隐蔽的话,直接 0xcc 好了。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
看一下,哈哈,**啊
|
能力值:
( LV13,RANK:250 )
|
-
-
15 楼
不知scz的MSF是怎么更新的?我的是Windows平台,MSF不能自动更新,用SVN手动更新也不能把MS08-067.rb自动下载下来。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
膜拜一下,受教育了
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
支持一下。。。初学的好文章
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
[quote=netwind;532210]
如果fun("\\x\..\..\xxxxxxxx...",buffer[],1000,L".",&q,1); 这样利用,则会吧L"."后面加\ 后接在\\x\..\..\xxxxxxxx... 前面,可以保证顺利进行
...[/quote]
部分转自LittleWallE的博客 http://blog.csdn.net/LittleWallE/archive/2009/01/14/3772791.aspx
我想是像他说的这样吧。
在windows2000和windows xp中,CanonPathName这个函数有一个另外的问题。 可以简单把流程想象成这样:
CanonPathName(WCHAR *A, WCHAR B)
{
WCHAR buffer[414];
if(A!=0)
{
if(wcslen(A)!=0)
{
wcscpy(buffer,A);
}
}else
{
buffer[0]=0;
}
wcscat(buffer,B);
……….
}
如果参数A不是0,而是一个指向空字符串的指针,则该函数的作用就是直接将B连接到缓冲buffer上,而buffer是一片没有初始化的区域,从而造成后面的字符串出错。
相应的,如果以下面的方式调用函数 (第四个参数是空字符串):
NetpwPathCanonicalize(“LittleWallE”,(unsigned short *)buffer,(unsigned char *)arg2, arg3,L"",(long *)Buff3,1);
则偶尔会利用不成功。
解决方法也很简单,将第四个参数设置为L"."即可.
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
这帖子适合新手看,支持
|
能力值:
( LV9,RANK:180 )
|
-
-
21 楼
疑...狐狸的精
得顶二下
没实践过shellcode, 不过我大概知道在玩什么
|
能力值:
( LV7,RANK:100 )
|
-
-
22 楼
支持北极狐狸精~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
进来膜拜下~~~~
|
能力值:
( LV3,RANK:20 )
|
-
-
24 楼
windows xp下,kernel32.dll的起始地址应该是固定的 0x7c800000,还有LoadLibrary和GetProcAddress函数的入口地址也是固定的,具体可参考upx加壳的记事本,看它的解压过程
|
能力值:
( LV9,RANK:610 )
|
-
-
25 楼
顶!!!!!!多谢分享~~
|
|
|