首页
社区
课程
招聘
[注意]xp 版本2002 sp3 关于堆栈溢出和SEH溢出 jmp shellcode的问题
发表于: 2008-10-15 17:26 5355

[注意]xp 版本2002 sp3 关于堆栈溢出和SEH溢出 jmp shellcode的问题

2008-10-15 17:26
5355


注册很就了.一直没发过贴.
这两天有兴趣学习了一下溢出方面的知识.
碰见了几个问题和大家分享下
我实验的环境是
xp 版本2002 sp3 + vs.net 2005 vc
首先就是碰到了一个/GS编译参数
在制造堆栈溢出jmp esp以前的时候vc加入了堆栈检测机制(我以前用vc6的没想到武器好了。功能也全了~~).
shellcode 还没执行就先给我报错了搞的一头雾水。后来自己跟踪代码才发现.net有这种机制。设置方法
菜单:
项目->属性->c/c++->代码生成->缓冲区安全检查 设置为(否/GS-)
重新编译。shellcode就可以玩了。

还有就是关于SEH溢出jmp ebx的问题。
首先是我用od在kernel32.dll,ntdll.dll,user32.dll,gdi.dll中都未搜索到FFE3 jmp ebx代码.也就是说没有可利用的跳转代码。
只能把在kernel32.dll中找到的jmp esp在SEH触发以前修改为jmp ebx结果出现意外。
在触发代码中。系统对jmp ebx的执行地址做了判断。如果是7c8xxxxx范围的代码不允许作为SEH的处理代码。因此不会执行这段shellcode.
所以堆栈溢出执行kernel32.dll jmp esp的方法在SEH触发执行kernel32.dll jmp ebx中是不能使用的。因为系统在SEH调用处理程序以前做了判断。
防止这种方式执行。所以各位如果做实验发现这种问题。不是你的错。是系统自己做了安全处理。

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
2
这些都是XPSP2推出后就有了的。

关于SEH保护的问题是因为它在别的地方存在SEH副本,验证不通过则不会去调用,不过,SEH还有唯一可利用的就是如果SEH处理函数放在堆区,则系统不会去校验。
2008-10-15 17:49
0
雪    币: 242
活跃值: (269)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
原来这样。继续研究。
2008-10-16 09:11
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rsa
4
这个问题该如何解决?
2009-6-11 16:04
0
游客
登录 | 注册 方可回帖
返回
//