第1章 捉虫
1.1 兴趣还是利益
1.2 通用技巧
1.2.1 个人技术偏好
1.2.2 代码中潜在的漏洞
1.2.3 模糊测试
1.2.4 延伸阅读
1.3 内存错误
1.4 专用工具
1.4.1 调试器
1.4.2 反汇编工具
1.5 EIP=41414141
1.6 结束语
第2章 回到90年代
2.1 发现漏洞
2.1.1 第一步:生成VLC中解复用器的清单
2.1.2 第二步:识别输入数据
2.1.3 第三步:跟踪输入数据
2.2 漏洞利用
2.2.1 第一步:找一个TiVo格式的样例电影文件
2.2.2 第二步:找一条代码路径执行到漏洞代码
2.2.3 第三步:修改这个TiVo电影文件,使VLC崩溃
2.2.4 第四步:修改这个TiVo电影文件,控制EIP
2.3 漏洞修正
2.4 经验和教训
2.5 补充
第3章 突破区域限制
3.1 发现漏洞
3.1.1 第一步:列出内核的IOCTL
3.1.2 第二步:识别输入数据
3.1.3 第三步:跟踪输入数据
3.2 漏洞利用
3.2.1 第一步:触发这个空指针解引用,实现拒绝服务
3.2.2 第二步:利用零页内存控制EIP/RIP
3.3 漏洞修正
3.4 经验和教训
3.5 补充
第4章 空指针万岁
4.1 发现漏洞
4.1.1 第一步:列出FFmpeg的解复用器
4.1.2 第二步:识别输入数据
4.1.3 第三步:跟踪输入数据
4.2 漏洞利用
4.2.1 第一步:找一个带有有效strk块的4X样例电影文件
4.2.2 第二步:了解这个strk块的布局
4.2.3 第三步:修改这个strk块以使 FFmpeg崩溃
4.2.4 第四步:修改这个strk块以控制EIP
4.3 漏洞修正
4.4 经验和教训
4.5 补充
第5章 浏览即遭劫持
5.1 探寻漏洞
5.1.1 第一步:列出WebEx注册的对象和导出方法
5.1.2 第二步:在浏览器中测试导出方法
5.1.3 第三步:找到二进制文件中的对象方法
5.1.4 第四步:找到用户控制的输入数值
5.1.5 第五步:逆向工程这个对象方法
5.2 漏洞利用
5.3 漏洞修正
5.4 经验和教训
5.5 补充
第6章 一个内核统治一切
6.1 发现漏洞
6.1.1 第一步:为内核调试准备一个VMware客户机
6.1.2 第二步:生成一个avast!创建的驱动和设备对象列表
6.1.3 第三步:检查设备的安全设置
6.1.4 第四步:列出IOCTL
6.1.5 第五步:找出用户控制的输入数据
6.1.6 第六步:逆向工程IOCTL处理程序
6.2 漏洞利用
6.3 漏洞修正
6.4 经验和教训
6.5 补充
第7章 比4.4BSD还老的BUG
7.1 发现漏洞
7.1.1 第一步:列出内核的IOCTL
7.1.2 第二步:识别输入数据
7.1.3 第三步:跟踪输入数据
7.2 漏洞利用
7.2.1 第一步:触发这个bug使系统崩溃(拒绝服务)
7.2.2 第二步:准备一个内核调试的环境
7.2.3 第三步:连接调试器和目标系统
7.2.4 第四步:控制EIP
7.3 漏洞修正
7.4 经验和教训
7.5 补充
第8章 铃音大屠杀
8.1 发现漏洞
8.1.1 第一步:研究iPhone的音频性能
8.1.2 第二步:创建一个简单的模糊测试程序对这个手机进行模糊测试
8.2 崩溃分析及利用
8.3 漏洞修正
8.4 经验和教训
8.5 补充
附录A 捉虫提示
附录B 调试
附录C 缓解技术
^ 收 起