漏洞
sunr_
这个作者很懒,什么都没留下…
展开
-
《0day安全》——重重保护下的堆
堆保护方式 1.PEB random:dword shoot写内存,覆盖PEB指针,加入随机化了就不行了。 2.Safe Unlink:验证当前堆块的下一个堆块的前向指针和前一个堆块的后向指针是否指向当前堆块。 3.heap cookie:跟栈的GS类似,cookie放在segment table处,占一个字节。 4.元数据加密:块首一些重要元素与一个4字节的随机数进行异或运算,使用时再异或回来,我们就不能直接破坏或改写这些数据了。攻击堆中存储的变量堆中的各项保护措施是对堆块的关键结构进行保护原创 2020-09-01 20:11:36 · 296 阅读 · 0 评论 -
《0day安全》——在内存中躲猫猫: ASLR
原理前面所有漏洞利用方法都有着一个共同的特征:都需要确定一个明确的跳转地址。无论是 JMP E SP 等通用跳板指令还是 Ret2Libc 使用的各指令,我们都要先确定这条指令的入口点。微软的 ASLR( Address Space Layout Randomization)技术就是通过加载程序的时候不再使用固定的基址加载,从而干扰shellcode 定位的一种保护机制。支持 ASLR 的程序在它的 PE 头中会设置 IMAGE_DLL_CHARACTERISTICS_ DYNAMIC_BASE 标识原创 2020-08-31 22:12:02 · 292 阅读 · 0 评论 -
《0day安全》——SEH终极防护:SEHOP
原理SEHOP 在 Windows Ser ver 2008 默认启用,而在 Windows Vista 和 Windows 7 中 SEHOP默认是关闭的。大家可以通过以下两种方法启用 SEHOP。 1.下载 http://go.microsoft.com/?linkid=9646972 的补丁,此补丁适用于 Windows 7和Windows Vista SP1。 2.手工在注册表中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Sessi原创 2020-08-31 20:33:02 · 840 阅读 · 0 评论 -
《0day安全》——数据与程序的分水岭:DEP
DEP机制的保护原理溢出攻击的根源在于区分不了代码与数据。DEP 的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入 shellcode 时,程序会尝试在数据页面上执行指令,此时 CPU 就会抛出异常,而不是去执行恶意指令。DEP 的主要作用是阻止数据页(如默认的堆页、各种堆栈页以及内存池页)执行代码。微软从 Windows XP SP2 开始提供这种技术支持,根据实现的机制不同可分为:软件 DEP( Software DEP)和硬件 DEP( Hardware-enforced DEP原创 2020-08-31 00:39:03 · 545 阅读 · 1 评论 -
《0day安全》——亡羊补牢:SafeSEH
启用该链接选项后,编译器在编译程序的时候将程序所有的异常处理函数地址提取出来,编入一张安全 S.E.H 表,并将这张表放到程序的映像里面。当程序调用异常处理函数的时候会将函数地址与安全 S.E.H 表进行匹配, 检查调用的异常处理函数是否位于安全 S.E.H 表中。攻击返回地址绕过SafeSEH没开GS,开了SafeSEH,直接攻击函数返回地址利用虚函数绕过SafeSEH不涉及异常处理,SafeSEH没有参与感从堆中绕过SafeSEH...原创 2020-08-27 19:13:57 · 349 阅读 · 0 评论 -
《0day安全》——栈中的守护天使:GS
GS安全编译选项原理在栈帧中压入一个随机DWORD,IDA称之为“security cookie”,位于EBP之前。系统在.data区块中存放一个security cookie的副本。当栈发生溢出是,security cookie将被覆盖,之后才是EBP和返回地址。函数返回之前比对两者的值,如果改变则说明security cookie已被破坏,发生了溢出。例外额外的数据和操作带来的直接后果就是系统性能的下降,为了将对性能的影响降到最小,编译器在编译程序的时候并不是对所有的函数都应用 GS,以下情况原创 2020-08-26 23:40:35 · 388 阅读 · 0 评论 -
《0day安全》——格式化字符串漏洞
printf中的缺陷#include "stdafx.h"#include <stdio.h>int main(){ int a=44, b=77; printf("a=%d, b=%d\n", a, b); printf("a=%x, b=%d\n"); return 0;} 环境备注操作系统Windows2000其他32位系统也可以编译器vc++6.0 编译选项默认buildrelease版本原创 2020-08-26 11:00:18 · 239 阅读 · 0 评论 -
《0day安全》——狙击Windows异常处理机制(SEH)
《0day2》——狙击Windows异常处理机制(SEH)SEH的异常处理模型主要由__try __except语句来完成,与标准的try catch相似。在栈溢出中利用SEH#include "stdafx.h"#include "stdio.h"#include <windows.h>char shellcode[]="\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90原创 2020-08-26 00:32:26 · 340 阅读 · 0 评论 -
《0day安全》堆溢出利用(下)——代码植入
《0day2》堆溢出利用(下)——代码植入常用狙击目标(xp sp1前)与栈溢出中的“地毯式轰炸”不同,堆溢出更加精准,往往直接狙击重要目标。精准是DWORD SHO OT 的优点,但“火力不足”有时也会限制堆溢出的利用,这样就需要选择最重要的目标用来“狙击”。&emps;1.内存变量:修改能够影响程序执行的重要标志变量,往往可以改变程序流程。(比如改了绕过身份验证)&emps;2.代码逻辑:修改代码段重要函数的关键逻辑有时可以达到一定攻击效果。(例如,程序分支处的判断逻辑,或者把原创 2020-08-25 21:35:31 · 518 阅读 · 0 评论 -
《0day安全》堆溢出利用(上)——DWORD SHOOT
《0day2》堆溢出利用(上)——DWORD SHOOT堆溢出利用原理溢出利用的精髓就是用精心构造的数据去溢出下一个堆块的块首,改写块首中的前向指针(flink)和后向指针(blink),然后在分配、释放、合并等操作发生时伺机获得一次向内存任意地址写入任意数据的机会。我们把这种能够向内存任意位置写入任意数据的机会称为“DWORD SHOOT”。注意:DWORD SHOOT 发生时,我们不但可以控制射击的目标(任意地址),还可以选用适当的子弹(4 字节恶意数据),32位系统的话地址是4字节,就是dwo原创 2020-08-25 11:59:21 · 782 阅读 · 0 评论 -
《0day安全》堆操作
《0day2》堆操作堆的调试#include "stdafx.h"#include <windows.h>int main(){ HLOCAL h1,h2,h3,h4,h5,h6; HANDLE hp; hp = HeapCreate(0,0x1000,0x10000); __asm int 3 h1 = HeapAlloc(hp,HEAP_ZERO_MEMORY,3); h2 = HeapAlloc(hp,HEAP_ZERO_MEMORY,5); h3 = Heap原创 2020-08-25 01:27:03 · 276 阅读 · 0 评论