目录


第一部分基础篇
第1章基本概念31.1病毒与木马3
1.1.1病毒3
1.1.2蠕虫4
1.1.3木马5
1.2软件漏洞5
1.2.1漏洞概念5
1.2.2漏洞分类8
1.2.3漏洞数据库10
1.3渗透测试12
1.3.1基本概念12
1.3.2渗透测试方法13
1.3.3安全自律意识14
1.4实验环境14
1.4.1VMware Workstation14
1.4.2认识Kali16
1.4.3Kali软件包管理22
1.4.4Kali常用指令22
第2章汇编语言基础25
2.1堆栈基础25
2.1.1内存区域25
2.1.2堆区和栈区26
2.1.3函数调用29
2.1.4常见寄存器与栈帧31
2.2汇编语言33
2.2.1主要寄存器33
2.2.2寻址方式35
2.2.3主要指令37
2.2.4函数调用汇编示例40
第3章软件调试基础45
3.1二进制文件45
3.1.1PE文件格式45
3.1.2软件加壳46
3.1.3虚拟内存47
3.1.4PE文件与虚拟内存的映射47
3.2调试分析工具52
3.2.1OllyDbg52
3.2.2IDA Pro54
3.3演示示例59
3.3.1PE文件代码注入59
3.3.2软件破解示例63
软件安全: 漏洞利用及渗透测试目录第二部分漏洞篇
第4章软件漏洞714.1缓冲区溢出漏洞72
4.1.1基本概念72
4.1.2栈溢出漏洞72
4.1.3堆溢出漏洞78
4.1.4SEH覆盖84
4.1.5单字节溢出87
4.2格式化字符串漏洞87
4.2.1格式化字符串的定义88
4.2.2格式化字符串漏洞的利用88
4.3整数溢出漏洞93
4.4攻击C++虚函数96
4.5其他类型漏洞100
4.5.1注入类漏洞100
4.5.2权限类漏洞101
第5章漏洞利用103
5.1概念及示例103
5.1.1漏洞利用103
5.1.2覆盖邻接变量示例104
5.1.3代码植入示例106
5.2shellcode编写110
5.2.1提取shellcode代码110
5.2.2shellcode编码114
5.3Windows安全防护117
5.3.1ASLR117
5.3.2GS Stack Protection119
5.3.3DEP121
5.3.4SafeSEH121
5.3.5SEHOP122
5.4漏洞利用技术122
5.4.1地址定位技术122
5.4.2API函数自搜索技术127
5.4.3返回导向编程133
5.4.4绕过其他安全防护135
第6章漏洞利用实践137
6.1WinDbg工具137
6.1.1WinDbg简介137
6.1.2WinDbg基本操作命令137
6.2Windows漏洞利用160
6.2.1RET EIP覆盖示例160
6.2.2ROP漏洞利用示例167
第7章漏洞挖掘基础178
7.1方法概述178
7.1.1方法分类178
7.1.2符号执行179
7.1.3污点分析180
7.2词法分析181
7.2.1基本概念181
7.2.2词法分析漏洞挖掘实践182
7.2.3基于IDA脚本的漏洞挖掘186
7.3数据流分析188
7.3.1基本概念188
7.3.2漏洞分析190
7.4模糊测试191
7.4.1基本概念191
7.4.2智能模糊测试193
7.4.3模糊测试工具示例194
7.4.4自动动手写Fuzzer199
7.4.5AFL模糊测试工具201
第8章漏洞挖掘技术进阶207
8.1程序切片技术207
8.1.1基础定义207
8.1.2工作原理211
8.1.3典型方法212
8.2程序插桩技术215
8.2.1插桩概念215
8.2.2插桩分类215
8.2.3Pin插桩示例216
8.3Hook技术224
8.3.1Hook概念224
8.3.2消息Hook225
8.3.3API Hook230
8.4符号执行技术242
8.4.1基本原理242
8.4.2方法分类247
8.4.3Angr应用示例247
8.5污点分析技术252
8.5.1基本原理252
8.5.2显式流分析254
8.5.3隐式流分析256
8.5.4检测漏洞示例258
第三部分渗透篇
第9章渗透测试基础2639.1渗透测试过程263
9.2渗透测试框架266
9.2.1认识Metasploit266
9.2.2常用命令267
9.3信息收集270
9.3.1被动信息收集270
9.3.2主动信息收集274
9.4扫描279
9.5漏洞利用284
9.6后渗透攻击288
9.6.1挖掘用户名和密码288
9.6.2获取控制权289
9.6.3Meterpreter命令289
第10章Web安全基础292
10.1基础知识292
10.1.1HTTP292
10.1.2HTML292
10.1.3JavaScript293
10.1.4HTTP会话管理294
10.2Web编程环境安装295
10.2.1环境安装295
10.2.2JavaScript实践298
10.3PHP与数据库编程302
10.3.1PHP语言302
10.3.2第一个Web程序303
10.3.3连接数据库304
10.3.4查询数据305
10.3.5一个完整的示例306
10.3.6Cookie实践314
10.4Web安全威胁316
第11章Web渗透实战基础322
11.1文件上传漏洞322
11.1.1WebShell322
11.1.2上传漏洞324
11.2跨站脚本攻击328
11.2.1脚本的含义328
11.2.2跨站脚本的含义329
11.2.3跨站脚本攻击的危害331
11.3SQL注入漏洞336
11.3.1SQL语法336
11.3.2注入原理337
11.3.3寻找注入点339
11.3.4SQLMap340
11.3.5SQL注入实践340
11.3.6SQL盲注347
11.3.7SQL注入防御措施352
第12章Web渗透实战进阶354
12.1文件包含漏洞354
12.1.1文件包含354
12.1.2本地文件包含漏洞355
12.1.3远程文件包含漏洞356
12.1.4PHP伪协议357
12.2反序列化漏洞359
12.2.1序列化与反序列化359
12.2.2PHP魔术方法360
12.2.3PHP反序列化漏洞361
12.3整站攻击案例365
第四部分CTF篇
第13章CTF题型及演示37313.1CTF简介373
13.2PWN题演示373
13.2.1PWN常用工具介绍374
13.2.2栈溢出379
13.2.3ROP382
13.2.4格式化字符串漏洞387
13.3逆向题演示392
13.3.1IDA逆向题示例392
13.3.2符号执行Angr解题示例393
13.3.3Pin解题示例396
13.3.4Hook解题示例403
13.3.5Z3解题示例408
13.4Web题演示413
13.4.1签到题414
13.4.2SQL注入414
13.4.3文件上传漏洞419
13.4.4跨站脚本攻击422
样题424
参考文献425