好友
阅读权限10
听众
最后登录1970-1-1
|
筠溪
发表于 2017-8-10 00:12
本帖最后由 筠溪 于 2017-8-10 00:18 编辑
我是在csdn上排的版,偷个懒直接挪过来啦。
今天终于看到传说中的dep机制了,让我们看看怎么突破他。
DEP基本原理就是数据所在内存页标识为不可执行,这样就导致一个问题,就是我们之前所有的实验都建立在一个基础上:shellcode的执行是位于堆或者栈上的,我们通过覆盖上面的正常数据,将可执行的恶意数据放在上面进行程序流程劫持。后来,微软的程序员就发现了这个致命的漏洞,就创建了这个机制:从XP SP2开始,CPU一旦检测到在非可执行区域执行指令,将禁止继续执行并抛出异常。
突破思路:
既然DEP不允许直接执行,我们可以在其他可执行位置为shellcode的每一条指令找到一条替代指令,就可以完成exploit了。(每一条指令都有一个ret,以便回收程序控制权)《0day》里面讲了3种思路突破dep
1、通过跳转到ZwSetInformationProcess函数将DEP关闭,再转入shellcode
2、通过跳转到VirtualProtect函数来将shellcode所在内存页设置为可执行状态,再转入shellcode
3、通过跳转到VirtualAlloc函数开辟一段具有执行权限的内存空间,然后将shellcode复制到这段内存中执行。
分析过程:
1、利用ZwSetInformationProcess突破DEP
下面这个链接怎么没法直接点?
http://blog.csdn.net/yx0051/article/details/76967229
这指令跳来跳去的,真的差点给我绕晕了。
2、下次更新利用Virtual protect突破DEP |
免费评分
-
参与人数 2 | 吾爱币 +1 |
热心值 +2 |
收起
理由
|
旧年白白白
| + 1 |
+ 1 |
哇!终于看到一个还在研究return into libc的了 |
夏雨微凉
| |
+ 1 |
感谢发布原创作品,吾爱破解论坛因你更精彩! |
查看全部评分
本帖被以下淘专辑推荐:
- · 学习及教程|主题: 1129, 订阅: 1116
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|