- 1Day">1Day
- 书籍
- 文章
- Migraine殇">Migraine殇
- Mips架构下漏洞分析入门">Mips架构下漏洞分析入门
- v8 engine exploit零基础入门">v8 engine exploit零基础入门
- 浏览器漏洞:从数组越界到任意地址读写">浏览器漏洞:从数组越界到任意地址读写
- 一步步学写Windows下的Shellcode">一步步学写Windows下的Shellcode
- Windows下漏洞利用——S.E.H深入分析">Windows下漏洞利用——S.E.H深入分析
- 在PWN题中绕过lea esp以及关于Ret2dl的一些补充">在PWN题中绕过lea esp以及关于Ret2dl的一些补充
- 高级ROP:Ret2dl_resolve技术详解">高级ROP:Ret2dl_resolve技术详解
- One_gadget和UAF结合利用堆溢出漏洞研究">One_gadget和UAF结合利用堆溢出漏洞研究
- IE漏洞学习笔记(三):CVE-2013-3893漏洞案例分析">IE漏洞学习笔记(三):CVE-2013-3893漏洞案例分析
- IE漏洞学习笔记(二):UAF释放后重用">IE漏洞学习笔记(二):UAF释放后重用
- IE漏洞学习笔记(一)Heap Spray">IE漏洞学习笔记(一)Heap Spray
- How2Heap堆利用学习笔记(四)">How2Heap堆利用学习笔记(四)
- How2Heap堆利用学习笔记(三):Unsafe_unlink">How2Heap堆利用学习笔记(三):Unsafe_unlink
- How2Heap堆利用学习笔记(二)">How2Heap堆利用学习笔记(二)
- How2Heap堆利用学习笔记(一)">How2Heap堆利用学习笔记(一)
- Migraine殇">Migraine殇
1Day
书籍
《0day安全:软件漏洞分析技术》
目录
第1篇 漏洞利用原理(初级)第1章 基础知识 21.1 漏洞概述 21.1.1 bug与漏洞 21.1.2 几个令人困惑的安全问题 21.1.3 漏洞挖掘、漏洞分析、漏洞利用 31.1.4 漏洞的公布与0day响应51.2 二进制文件概述 51.2.1 PE文件格式 51.2.2 虚拟内存 61.2.3 PE文件与虚拟内存之间的映射 71.3 必备工具 111.3.1 OllyDbg简介 111.3.2 SoftICE简介 111.3.3 WinDbg简介 161.3.4 IDA Pro简介 181.3.5 二进制编辑器 201.3.6 VMware简介 211.3.7 Python编程环境 281.4 Crack小实验 29第2章 栈溢出原理与实践 382.1 系统栈的工作原理 382.1.1 内存的不同用途 382.1.2 栈与系统栈 392.1.3 函数调用时发生了什么 402.1.4 寄存器与函数栈帧 432.1.5 函数调用约定与相关指令 442.2 修改邻接变量 472.2.1 修改邻接变量的原理 472.2.2 突破密码验证程序 492.3 修改函数返回地址 532.3.1 返回地址与程序流程 532.3.2 控制程序的执行流程 572.4 代码植入 622.4.1 代码植入的原理 622.4.2 向进程中植入代码 62第3章 开发shellcode的艺术 713.1 shellcode概述 713.1.1 shellcode与exploit 713.1.2 shellcode需要解决的问题 723.2 定位shellcode 733.2.1 栈帧移位与jmp esp 733.2.2 获取“跳板”的地址 763.2.3 使用“跳板”定位的exploit 783.3 缓冲区的组织 813.3.1 缓冲区的组成 813.3.2 抬高栈顶保护shellcode 833.3.3 使用其他跳转指令 833.3.4 不使用跳转指令 843.3.5 函数返回地址移位 853.4 开发通用的shellcode 873.4.1 定位API的原理 873.4.2 shellcode的加载与调试 883.4.3 动态定位API地址的shellcode 893.5 shellcode编码技术 983.5.1 为什么要对shellcode编码 983.5.2 会“变形”的shellcode 993.6 为shellcode“减肥” 1033.6.1 shellcode瘦身大法 1033.6.2 选择恰当的hash算法 1053.6.3 191个字节的bindshell 107第4章 用MetaSploit开发Exploit 1194.1 漏洞测试平台MSF 简介 1194.2 入侵Windows系统 1214.2.1 漏洞简介 1214.2.2 图形界面的漏洞测试 1214.2.3 console界面的漏洞测试 1254.3 利用MSF制作shellcode 1264.4 用MSF扫描“跳板” 1284.5 Ruby语言简介 1294.6 “傻瓜式”Exploit开发 1344.7 用MSF发布POC 140第5章 堆溢出利用 1445.1 堆的工作原理 1445.1.1 Windows堆的历史 1445.1.2 堆与栈的区别 1455.1.3 堆的数据结构与管理策略 1465.2 在堆中漫游 1515.2.1 堆分配函数之间的调用关系 1515.2.2 堆的调试方法 1525.2.3 识别堆表 1555.2.4 堆块的分配 1585.2.5 堆块的释放 1595.2.6 堆块的合并 1595.2.7 快表的使用 1615.3 堆溢出利用(上)——DWORD SHOOT 1635.3.1 链表“拆卸”中的问题 1635.3.2 在调试中体会“DWORD SHOOT” 1655.4 堆溢出利用(下)——代码植入 1695.4.1 DWORD SHOOT的利用方法 1695.4.2 狙击P.E.B中RtlEnterCritical-Section()的函数指针 1705.4.3 堆溢出利用的注意事项 175第6章 形形色色的内存攻击技术 1786.1 狙击Windows异常处理机制 1786.1.1 S.E.H概述 1786.1.2 在栈溢出中利用S.E.H 1806.1.3 在堆溢出中利用S.E.H 1846.1.4 深入挖掘Windows异常处理 1876.1.5 其他异常处理机制的利用思路 1926.2 “off by one”的利用 1966.3 攻击C++的虚函数 1986.4 Heap Spray:堆与栈的协同攻击 201第7章 手机里的缓冲区溢出 2047.1 Windows Mobile简介 2047.1.1 Windows Mobile前世今生 2047.1.2 Windows Mobile架构概述 2057.1.3 Windows Mobile的内存管理 2097.2 ARM简介 2127.2.1 ARM是什么 2127.2.2 ARM寄存器结构 2127.2.3 ARM汇编指令结构 2157.2.4 ARM指令寻址方式 2207.2.5 ARM的函数调用与返回 2227.3 Windows Mobile上的HelloWorld 2237.4 远程调试工具简介 2277.4.1 远程信息查看管理套件 2277.4.2 手机上的调试——Microsoft Visual Studio 2317.4.3 手机上的调试——IDA 2337.5 手机上的exploit me 237第8章 其他类型的软件漏洞 2438.1 格式化串漏洞 2438.1.1 printf中的缺陷 2438.1.2 用printf读取内存数据 2448.1.3 用printf向内存写数据 2458.1.4 格式化串漏洞的检测与防范 2468.2 SQL注入攻击 2478.2.1 SQL注入原理 2478.2.2 攻击PHP+MySQL网站 2488.2.3 攻击ASP+SQL Server网站 2508.2.4 注入攻击的检测与防范 2528.3 其他注入方式 2538.3.1 Cookie注入,绕过马其诺防线 2538.3.2 XPath注入,XML的阿喀琉斯之踵 2548.4 XSS攻击 2558.4.1 脚本能够“跨站”的原因 2558.4.2 XSS Reflection攻击场景 2568.4.3 Stored XSS攻击场景 2588.4.4 攻击案例回顾:XSS蠕虫 2588.4.5 XSS的检测与防范 2598.5 路径回溯漏洞 2608.5.1 路径回溯的基本原理 2608.5.2 范式化与路径回溯 261第2篇 漏洞利用原理(高级)第9章 Windows安全机制概述 264第10章 栈中的守护天使:GS 26710.1 GS安全编译选项的保护原理 26710.2 利用未被保护的内存突破GS 27110.3 覆盖虚函数突破GS 27310.4 攻击异常处理突破GS 27610.5 同时替换栈中和.data中的Cookie突破GS 280第11章 亡羊补牢:SafeSEH 28411.1 SafeSEH对异常处理的保护原理 28411.2 攻击返回地址绕过SafeSEH 28811.3 利用虚函数绕过SafeSEH 28811.4 从堆中绕过SafeSEH 28811.5 利用未启用SafeSEH模块绕过SafeSEH 29211.6 利用加载模块之外的地址绕过SafeSEH 29911.7 利用Adobe Flash Player ActiveX控件绕过SafeSEH 305第12章 数据与程序的分水岭:DEP 31312.1 DEP机制的保护原理 31312.2 攻击未启用DEP的程序 31612.3 利用Ret2Libc挑战DEP 31712.3.1 Ret2Libc实战之利用ZwSetInformationProcess 31812.3.2 Ret2Libc实战之利用VirtualProtect 33012.3.3 Ret2Libc实战之利用VirtualAlloc 33912.4 利用可执行内存挑战DEP 34812.5 利用.NET挑战DEP 35212.6 利用Java applet挑战DEP 359第13章 在内存中躲猫猫:ASLR 36313.1 内存随机化保护机制的原理 36313.2 攻击未启用ASLR的模块 36713.3 利用部分覆盖进行定位内存地址 37213.4 利用Heap spray技术定位内存地址 37613.5 利用Java applet heap spray技术定位内存地址 37913.6 为.NET控件禁用ASLR 382第14章 S.E.H终极防护:SEHOP 38614.1 SEHOP的原理 38614.2 攻击返回地址 38814.3 攻击虚函数 38814.4 利用未启用SEHOP的模块 38814.5 伪造S.E.H链表 390第15章 重重保护下的堆 39615.1 堆保护机制的原理 39615.2 攻击堆中存储的变量 39715.3 利用chunk重设大小攻击堆 39815.4 利用Lookaside表进行堆溢出 407第3篇 漏洞挖掘技术第16章 漏洞挖掘技术简介 41416.1 漏洞挖掘概述 41416.2 动态测试技术 41516.2.1 SPIKE简介 41516.2.2 beSTORM简介 42116.3 静态代码审计 429第17章 文件类型漏洞挖掘 与Smart Fuzz 43117.1 Smart Fuzz概述 43117.1.1 文件格式Fuzz的基本方法 43117.1.2 Blind Fuzz和Smart Fuzz 43217.2 用Peach挖掘文件漏洞 43317.2.1 Peach介绍及安装 43317.2.2 XML介绍 43417.2.3 定义简单的 Peach Pit 43617.2.4 定义数据之间的依存关系 44017.2.5 用Peach Fuzz PNG文件 44117.3 010脚本,复杂文件解析的瑞士军刀 44617.3.1 010 Editor简介 44617.3.2 010脚本编写入门 44717.3.3 010脚本编写提高——PNG文件解析 44917.3.4 深入解析,深入挖掘——PPT文件解析 452第18章 FTP的漏洞挖掘 45718.1 FTP协议简介 45718.2 漏洞挖掘手记1:DOS 45718.3 漏洞挖掘手记2:访问权限 46618.4 漏洞挖掘手记3:缓冲区溢出 46818.5 漏洞挖掘手记4:Fuzz DIY 472第19章 E-Mail的漏洞挖掘 47719.1 挖掘SMTP漏洞 47719.1.1 SMTP协议简介 47719.1.2 SMTP漏洞挖掘手记 47819.2 挖掘POP3漏洞 48019.2.1 POP3协议简介 48019.2.2 POP3漏洞挖掘手记 48119.3 挖掘IMAP4漏洞 48919.3.1 IMAP4协议简介 48919.3.2 IMAP4漏洞挖掘手记 49019.4 其他E-mail漏洞 49119.4.1 URL中的路径回溯 49119.4.2 内存中的路径回溯 49419.4.3 邮件中的XSS 500第20章 ActiveX控件的漏洞挖掘 50220.1 ActiveX控件简介 50220.1.1 浏览器与ActiveX控件的关系 50220.1.2 控件的属性 50320.2 手工测试ActiveX控件 50420.2.1 建立测试模板 50420.2.2 获取控件的接口信息 50520.3 用工具测试ActiveX控件:COMRaider 50920.4 挖掘ActiveX漏洞 51620.4.1 ActiveX漏洞的分类 51620.4.2 漏洞挖掘手记1:超星阅读器溢出 51720.4.3 漏洞挖掘手记2:目录操作权限 52120.4.4 漏洞挖掘手记3:文件读权限 52320.4.5 漏洞挖掘手记3:文件删除权限 525第4篇 操作系统内核安全第21章 探索ring0 52821.1 内核基础知识介绍 52821.1.1 内核概述 52821.1.2 驱动编写之Hello World 52821.1.3 派遣例程与IRP结构 53321.1.4 Ring3打开驱动设备 53721.1.5 DeviceIoControl函数与IoControlCode 53821.1.6 Ring3/Ring0的四种通信方式 53921.2 内核调试入门 54121.2.1 创建内核调试环境 54121.2.2 蓝屏分析 54921.3 内核漏洞概述 55121.3.1 内核漏洞的分类 55121.3.2 内核漏洞的研究过程 55321.4 编写安全的驱动程序 55521.4.1 输入输出检查 55521.4.2 验证驱动的调用者 55621.4.3 白名单机制的挑战 556第22章 内核漏洞利用技术 55722.1 利用实验之exploitme.sys 55722.2 内核漏洞利用思路 55922.3 内核漏洞利用方法 56022.4 内核漏洞利用实战与编程 56522.5 Ring0 Shellcode的编写 570第23章 FUZZ驱动程序 57923.1 内核FUZZ思路 57923.2 内核FUZZ工具介绍 58123.3 内核FUZZ工具DIY 58323.3.1 Fuzz对象、Fuzz策略、Fuzz项 58323.3.2 IoControl MITM Fuzz 58323.3.3 IoControl Driver Fuzz 58523.3.4 MyIoControl Fuzzer界面 58623.4 内核漏洞挖掘实战 58823.4.1 超级巡警ASTDriver.sys本地提权漏洞 58823.4.2 东方微点mp110013.sys本地提权漏洞 59423.4.3 瑞星HookCont.sys驱动本地拒绝服务漏洞 601第24章 内核漏洞案例分析 60524.1 远程拒绝服务内核漏洞 60524.2 本地拒绝服务内核漏洞 61124.3 缓冲区溢出内核漏洞 61424.4 任意地址写任意数据内核漏洞 61924.5 任意地址写固定数据内核漏洞 622第5篇 漏洞分析案例第25章 漏洞分析技术概述 62825.1 漏洞分析的方法 62825.2运动中寻求突破:调试技术 62925.2.1 断点技巧 63025.2.2 回溯思路 64425.3 用“白眉”在PE中漫步 64725.3.1 指令追踪技术与Paimei 64725.3.2 Paimei的安装 64825.3.3 使用PE Stalker 64925.3.4 迅速定位特定功能对应的代码 65225.4 补丁比较 654第26章 RPC入侵:MS06-040 与MS08-067 65826.1 RPC漏洞 65826.1.1 RPC漏洞简介 65826.1.2 RPC编程简介 65826.2 MS06-040 65926.2.1 MS06-040简介 65926.2.2 动态调试 66026.2.3 静态分析 66726.2.4 实现远程exploit 67026.3 Windows XP环境下的MS06-040 exploit 67726.3.1 静态分析 67726.3.2 蠕虫样本的exploit方法 68226.3.3 实践跨平台exploit 68426.4 MS08-067 69026.4.1 MS08-067简介 69026.4.2 认识Legacy Folder 69326.4.3 “移经”测试 69426.4.4 “移经”风险 69526.4.5 POC的构造 69626.5 魔波、Conficker与蠕虫病毒 703第27章 MS06-055分析:实战Heap Spray 70527.1 MS06-055简介 70527.1.1 矢量标记语言(VML)简介 70527.1.2 0 day安全响应纪实 70627.2 漏洞分析 70727.3 漏洞利用 710第28章 MS09-032分析:一个“&”引发的血案 71328.1 MS09-032简介 71328.2 漏洞原理及利用分析 713第29章 Yahoo!Messenger栈 溢出漏洞 71929.1 漏洞介绍 71929.2 漏洞分析 71929.3 漏洞利用 723第30章 CVE-2009-0927:PDF中的JS 72530.1 CVE-2009-0927简介 72530.2 PDF文档格式简介 72530.3 漏洞原理及利用分析 727第31章 坝之蚁穴:超长URL溢出漏洞 73131.1 漏洞简介 73131.3 漏洞原理及利用分析 731第32章 暴风影音M3U文件解析漏洞 73732.1 漏洞简介 73732.2 M3U文件简介 73732.3 漏洞原理及利用分析 738第33章 LNK快捷方式文件漏洞 74433.1 漏洞简介 74433.2 漏洞原理及利用分析 744附录A 已公布的内核程序漏洞列表 750参考文献 753
jas502n/0day-security-software-vulnerability-analysis-technology
资料包中资料仅用于学习目的,任何组织、个人、机构不可以任何形式利用资料包中的资料进行商业盈利目的的活动。 资料包中的部分资料和实验代码有可能引起某些安全软件的报警,书籍作者,出版社,看雪论坛对这些使用这些资料造成的后果概不负责,请您在充分了解这些资料用途的基础上慎用。 任何组织、个人、机构不得利用本书及相关资料进行任何形式的非法活动。
《漏洞战争:软件漏洞分析精要》
系统地讲解软件漏洞分析与利用所需的各类工具、理论技术和实战方法,主要涉及Windows 和Android 系统平台。 《漏洞战争:软件漏洞分析精要》根据不同的软件漏洞类型划分,比如堆栈溢出、沙盒逃逸、类型混淆、UAF、内核漏洞等,同时又针对当前流行的移动安全,加入Android 平台上的漏洞分析与利用。 以精心挑选的经典漏洞为例,以分享漏洞的分析技巧和工具为主,对这些漏洞的成因、利用及修复方法进行详细讲解,旨在”授之以渔”。 《漏洞战争:软件漏洞分析精要》最大的特点是以各种类型的经典漏洞作为实战讲解,摒弃空头理论,几乎是”一本用调试器写出来的书”。
基础篇(第1章)
主要介绍一些软件漏洞相关的基本概念,以及常用工具及漏洞分析方法,最后向读者推荐一些相关的学习站点和书籍,方便读者做进一步地学习和交流。
实战篇(第2~11章)
是本书最主要的部分,根据不同的漏洞类型挑选不同的经典案例,用不同的漏洞分析技巧,向读者介绍比较高效的分析方法,剖析各种常见的软件漏洞类型、原理、利用和修复的实战技术。同时,紧跟当前热门的移动互联网安全问题,增加了Android平台的漏洞分析,以保持内容与时俱进。
展望篇(第12章)
对未来的软件漏洞发展趋势做出预判,相信未来的主要战场会更集中在移动终端、云计算平台、物联网三大方向上,并对现有的这些方向的漏洞案例进行简要介绍。
riusksk/vul_war
《漏洞战争:软件漏洞分析精要》配套资料 包括漏洞程序、样本、学习资料等等,由于多次上传目录失败,因此只好上传压缩包。
文章
Migraine殇
Mips架构下漏洞分析入门
Mips架构下二进制漏洞入门笔记,最后调试TP-LINK路由器的一个栈溢出漏洞作为练习。
v8 engine exploit零基础入门
本文将教会读者,如何从一个零基础漏洞新手,学会从chromium的commit中获取diff和poc,最后写出一个v8的exploit。
浏览器漏洞:从数组越界到任意地址读写
暂时不讨论堆利用本身,会分别讨论两个浏览器漏洞,利用漏洞实现了OOB之后,如何在开启ASLR的情况下完成地址泄漏,帮助读者完成Exploit的最后一公里。
一步步学写Windows下的Shellcode
网络上编写shellcode的教程大多是关于Linux的,加之顺带学习PE文件结构,所以打算写一篇关于Windows 下shellcode的编写,为要编写Shellcdoe的读者提供一些参考。
Windows下漏洞利用——S.E.H深入分析
本文将从最基础的SEH覆盖,到SafeSEH保护机制的绕过,再到最后绕过SafeSEH结合DEP等保护机制,对SEH的利用进行由浅入深的的研究。
在PWN题中绕过lea esp以及关于Ret2dl的一些补充
本文会根据做题的调试过程进行解析,介绍其中如何利用lea esp控制栈帧,以及如何调试一个伪造的重定向结构。
高级ROP:Ret2dl_resolve技术详解
一道简单的pwn题引出的一种构造非常复杂ROP技巧—ret2dl_resolve。本文将从原理的角度,解析ELF文件以及其延迟绑定的原理,深入解析这一种技术。
One_gadget和UAF结合利用堆溢出漏洞研究
通过一道简单的ROP题目理解One_gadget的工作原理,之后利用其提供的ROP链实现堆的UAF漏洞。堆溢出作为CTF的pwn一大题型,非常值得研究。
IE漏洞学习笔记(三):CVE-2013-3893漏洞案例分析
该漏洞是的原理是,IE下的mshtml动态连接库将TreeNode对象从Dom树释放后,又重新调用对象的任意代码执行。该漏洞覆盖的IE版本从IE6到IE11,是一个典型的浏览器UAF漏洞,最后使用精准堆喷射完成利用。
IE漏洞学习笔记(二):UAF释放后重用
UAF漏洞全称为use after free,即释放后重用。漏洞产生的原因,在于内存在被释放后,但是指向指针并没有被删除,又被程序调用。比较常见的类型是C++对象,利用UAF修改C++的虚函数表导致的任意代码执行。
IE漏洞学习笔记(一)Heap Spray
HeapSpray这个技术是IE漏洞利用中非常重要的一点,能够绕过很多利用一般技术很难绕过的保护机制(DEP/ASLR),虽然这并不是一种漏洞利用手法,但是这种手法确实值得我们去研究和掌握。
How2Heap堆利用学习笔记(四)
通过前三篇文章的学习,我们了解了堆利用的基本概念和技术。本篇文章,我们将要了解堆利用中的House技术以及与off by one结合后的利用手法。
How2Heap堆利用学习笔记(三):Unsafe_unlink
How2Heap堆利用学习笔记(二)
这次将介绍如何利用malloc中的consolidate机制来实现double free。本文会涉及一些源代码,如有解释错误,恳请各位大神指正。
How2Heap堆利用学习笔记(一)
对Linux下堆利用的学习记录,学习顺序大体是按照shellphish团队的how2heap的流程,尽量每个方面都调试的详尽一些,并结合案例进行分析。
