Q版缓冲区溢出教程
介紹
1.
写在前面
2.
前言
3.
作者简介
4.
主要角色简介
5.
阅读指南
6.
第一章、Windows下堆栈溢出入门
6.1.
1.1 梦,已经展开
6.2.
1.2 啤酒和杯子――缓冲区溢出原理
6.3.
1.3 神秘的Windows系统
6.3.1.
1.3.1 溢出例子――报错对话框
6.3.2.
1.3.2 堆栈和溢出
6.3.3.
1.3.3 溢出报错的原因分析
6.4.
1.4 ShellCode编写简介
6.5.
1.5 窥豹一斑――本地缓冲区溢出简单利用
6.5.1.
1.5.1 ShellCode的定位
6.5.2.
1.5.2 成功构造利用
6.6.
1.6 小结——摘自小强的日记
6.7.
1.7 首次实战――FoxMail溢出漏洞编写
6.7.1.
1.7.1 漏洞公告的分析
6.7.2.
1.7.2 美妙定位溢出点
6.7.3.
1.7.3 ShellCode的使用
6.7.4.
1.7.4 通用的JMP ESP地址
6.8.
1.8 牛刀小试――Printer溢出漏洞编写
6.8.1.
1.8.1 漏洞背景
6.8.2.
1.8.2 构造利用
6.9.
1.10 拾阶而上——IDA/IDQ溢出漏洞编写
6.9.1.
1.10.1 漏洞公告
6.9.2.
1.10.2 初步利用
6.9.3.
1.10.3 宽字符
6.10.
课后解惑
7.
第二章、Windows下ShellCode编写初步
7.1.
2.4 弹出Windows对话框ShellCode的编写
7.1.1.
2.4.1 C程序解释
7.1.2.
2.4.2 生成汇编和ShellCode
7.2.
2.5 添加用户ShellCode的编写
7.2.1.
2.5.1 小强的日记之二——添加用户ShellCode的编写
7.2.2.
2.5.2 小强的日记之三——添加用户的另一种方法
7.3.
课后解惑
8.
第三章、后门的编写和ShellCode的提取
8.1.
3.1 预备知识
8.1.1.
3.1.1 IP和Socket编程初步
8.1.2.
3.1.2 进程间通信及管道
8.2.
3.2 后门总体思路
8.3.
3.3 Telnet后门的高级语言实现
8.3.1.
3.3.1 双管道后门的实现
8.3.2.
3.3.2 单管道后门的实现
8.4.
3.4 生成ShellCode
8.4.1.
3.4.1 转换成汇编
8.4.2.
3.4.2 看谁抄得快——提取ShellCode
8.5.
3.5 进一步的探讨
8.5.1.
3.5.1 更简单的办法——零管道后门
8.5.2.
3.5.2 正向连接和反向连接
8.6.
3.6 反连后门ShellCode的编写
8.6.1.
3.6.1 总体思路和实现
8.6.2.
3.6.2 从神话到史诗——《特洛依》
8.7.
课后解惑
9.
第四章 Windows下堆溢出利用编程
9.1.
4.1 堆溢出初探
9.2.
4.2 RtlAllcoateHeap的失误
9.2.1.
4.2.1 有问题的例子
9.2.2.
4.2.2 堆溢出点的定位
9.2.3.
4.2.3 ShellCode的特殊要求
9.2.4.
4.2.4 跳转到ShellCode
9.2.5.
4.2.5 覆盖默认异常处理
9.2.6.
4.2.6 定位的改进——call [esi+0x4c]
9.3.
4.3 实例——Message堆溢出漏洞的利用
9.3.1.
4.3.1 溢出点的定位
9.3.2.
4.3.2 通用和编码ShellCode初接触
9.3.3.
4.3.3 跳转和构造
9.4.
4.4 RtlFreeHeap的失误
9.4.1.
4.4.1 有问题的程序
9.4.2.
4.4.2 Windows堆块的管理结构
9.4.3.
4.4.3 what→where
9.4.4.
4.4.4 构造和利用
9.5.
4.5 堆溢出的其他利用方式
9.5.1.
4.5.1 覆盖PEB
9.5.2.
4.5.2 覆盖Vector异常句柄
9.5.3.
4.5.3 其他方法
9.6.
4.6 实例——JPEG处理堆溢出漏洞的利用
9.6.1.
4.6.1 漏洞的起因
9.6.2.
4.6.2 构造的特殊性
9.6.3.
4.6.3 完美的利用
9.7.
课后解惑
10.
第五章 ShellCode变形编码大法
10.1.
5.1 为什么要编码
10.1.1.
5.1.1 Exploit失败原因分析
10.1.2.
5.1.2 ShellCode编码的用处
10.2.
5.2 简单的编码——异或大法
10.2.1.
5.2.1 原理——异或不变
10.2.2.
5.2.2 编码——异或97
10.2.3.
5.2.3 解码——decode程序
10.2.4.
5.2.4 实例——异或DOS窗口程序
10.2.5.
5.2.5 所长所短
10.3.
5.3 简便的变形——微调法
10.3.1.
5.3.1 变形的原理
10.3.2.
5.3.2 完善的DOS窗口程序
10.4.
5.4 直接替换法
10.4.1.
5.4.1 替换的思想
10.4.2.
5.4.2 编码C程序
10.4.3.
5.4.3 解码汇编
10.4.4.
5.4.4 直接替换DOS窗口程序
10.4.5.
5.4.5 直接替换法的优缺点
10.5.
5.5 字符拆分法
10.5.1.
5.5.1 方法一 Z=A+B
10.5.2.
5.5.2 方法二 0xAB=0xA*0x10+0xB
10.5.3.
5.5.3 实际运用——WebDav漏洞编写
10.6.
5.6 内存搜索法
10.6.1.
5.6.1 搜索的原因——长度限制
10.6.2.
5.6.2 搜索的原理——查找标志
10.7.
5.7 搜索实例——Serv_U漏洞的利用
10.7.1.
5.7.1 利用Ollydbg定位溢出点
10.7.2.
5.7.2 XP下SEH的利用
10.7.3.
5.7.3 跨过长度限制——搜索
10.8.
5.8 “计算与你同行”—— Computing & Society
10.9.
课后解惑
11.
第六章 ShellCode编写高级技术
11.1.
6.1 通用ShellCode的编写
11.1.1.
6.1.1 思路——动态定位函数的地址
11.1.2.
6.1.2 方法一、野蛮的暴力搜索
11.1.3.
6.1.3 方法二、PEB获取GetProcAddrees函数地址
11.1.4.
6.1.4 通用ShellCode的编写——监听后门
11.1.5.
6.1.5 方法三、SEH获得kernel基址
11.1.6.
6.1.6 HASH法查找所函数地址
11.2.
6.2 ShellCode的高效提取技巧
11.2.1.
6.2.1 汇编内存提取
11.2.2.
6.2.2 可执行文件提取
11.2.3.
6.2.3 C语言直接提取
11.3.
6.3 ShellCode的高级功能
11.3.1.
6.3.1 恢复堆链表
11.3.2.
6.3.2 TTP和FTP客户端——冲击波/震荡波传播的实现
11.3.3.
6.3.3 突破防火墙
11.4.
课后解惑
12.
第七章、漏洞的发现、分析和利用
12.1.
7.1 CCProxy 漏洞的分析
12.1.1.
7.1.1 CCProxy的安装与设置
12.1.2.
7.1.2 漏洞的定位和利用
12.1.3.
7.1.3 漏洞的分析
12.2.
7.2 黑盒法探测漏洞和Python脚本
12.2.1.
7.2.1 黑盒测试原理
12.2.2.
7.2.2 Python简介
12.2.3.
7.2.3 实例——Python探测CCProxy漏洞
12.2.4.
7.2.4 Python探测warFTP漏洞
12.3.
7.3 白盒法和IDA分析漏洞
12.3.1.
7.3.1 白盒法测试
12.3.2.
7.3.2 IDA帮助分析 warFTP漏洞
12.3.3.
7.3.3 黑白结合,LSA漏洞的分析利用
13.
尾声
Powered by
GitBook
Q版缓冲区溢出教程
前言
作者名称:王炜 方勇