一,通过 VirutalProtect() 修改内存属性绕过 DEP DEP 的四种工作模式中,OptOut 和 AlwaysOn 下所有进程默认都开启 DEP 保护,这里如果一个程序自身需要从堆栈中取指令,则会发生错误.为了解决这个问题,MS 在 kernel32.dll 中提供了修改内存属性的 VirtualProtect() 函数,可以修改可执行属性.故一个新的思路的构造参数并利用 VirutalProtect() 修改 shellcode 为可执行,进而绕过 DEP. BOOL Virt…
Data Execution Prevention,数据执行保护,专门用来弥补计算机对数据和代码混淆这一天然缺陷. DEP 的原理是将数据所在的内存页(默认的堆.各种堆栈页.内存池页)标记为不可执行,当试图执行不可执行页的数据时,CPU 抛出异常,转入异常处理. MS 从 Windows XP sp2 开始支持 DEP.DEP 分为软件 DEP 和硬件 DEP,软件 DEP 即 SafeSEH.硬件 DEP 需要 CPU 的支持:AMD 和 Intel 都为此做了设计,AMD 称为 No-Exe…
0.题意:动态维护带权中心 1.分析:妈的,这题做了一天,mdzzzzzzzzzzzzzzzzzz-.. 这个题是边权,我们首先要将边权转化成点权... 我们维护一个分支结构中到根的距离和,一个分支结构中到分支中心的距离和,这个分支结构中所有的军队总量,lca-,lca这个预处理出来,因为要求树上两点距离 询问到一个点的距离时(下面称query值),我们在logn个分治结构中询问答案 到x点的答案=x本身子树到这个点答案,然后我们向上跳 每次跳我们将答案+=father[x]的除了x这个子树的点…
利用Ret2Libc绕过DEP之VirtualProtect函数 ⑴.  原理分析: i.相关概念: VirtualProtect()函数: BOOL WINAPI VirtualProtect( _In_ LPVOID lpAddress,    //目标地址的起始位置 _In_ SIZE_T dwSize,    //区域大小 _In_ DWORD flNewProtect,    //新的保护属性,设置为(0x40)市该内存页为可写可读可执行. _Out_ PDWORD lpflOldPr…
CVE-2011-0065 Firefox mChannel UAF漏洞 为了实现任意代码执行,需要在mChannel对象释放后,用可控数据“占坑”填充它,因此,可在onChannelRedirect函数调用完成后,紧跟着申请一块大小相同的内存: e = document.getElementById("d"); e.QueryInterface(Components.interfaces.nsIChannelEventSink).onChannelRedirect(null,new…
国庆假期没事做了几道pwn题练手,等有时间在贴出pwn题的分析. 利用VIRTUALALLOC的方法绕过DEP其实和之前的方法大同小异了,只是VIRTUALALLOC开辟了一段新的可执行的内存空间,然后在复制shellcode,比修改内存属性要麻烦一点点. VirtualAlloc函数说明: lpAddress: 申请内存的起始地址,实验选了0x00030000 dwSize: 申请的内存大小,实验选择0XFF,根据shellcode的大小确定 flAllocationType: 申请内存的类型…
这几天做了NSCTF和GCTF,耽误了几天,今天继续. 这次绕过DEP的方法是利用VirtualProtect函数将shellcode所在的内存属性改成可执行状态就可以绕过DEP了. 首先看一下VirtualProtect函数的参数说明: lpAddress: 改变属性的内存起始起止 dwSize: 要改变属性的内存的起始地址 flNewProtect: 需要设置的内存的新属性,这里设置为0x40就行,可读可写可执行 pflOldProtest: 内存原始属性类型保存地址,根据实验书上的意思这里…
Linux下利用Ret2Libc绕过DEP ⑴.  原理分析: 系统库函数通常是不受DEP(关于DEP,可以查看我之前文章的详细介绍)保护的,所以通过将返回地址指向系统函数可以绕过DEP保护,所以可以通过调研系统函数system()获得shell. ⑵.环境准备: i.漏洞代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> void flow()…
1.    DEP内存保护机制 1.1   DEP工作原理 分析缓冲区溢出攻击,其根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计算机体系结构基本上是不可能的,我们只能靠向前兼容的修补来减少溢出带来的损害,数据执行保护DEP就是用来弥补计算机对数据和代码混淆这一天然缺陷的. DEP的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时(注1),程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令.如下图所示. DE…
20155306 白皎 0day漏洞--漏洞利用原理之DEP 一.DEP机制的保护原理 1.为什么出现DEP? 溢出攻击的根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计算机体系结构基本上是不可能的,我们只能靠向前兼容的修补来减少溢出带来的损害,DEP(数据执行保护,Data Execution Prevention)就是用来弥补计算机对数据和代码混淆这一天然缺陷的. 2.DEP是什么? DEP-数据执行保护的缩写,DataExecutionPrevention.能…