第一篇 预备知识 2
项目1 Web服务器平台安装与配置 2
【项目描述】 2
【知识储备】 2
任务1-1安装Web服务器操作系统 4
任务1-2安装并配置PHP 6
任务1-3安装并配置MySQL 7
任务1-4安装并配置Apache 9
【项目总结】 11
【拓展思考】 11
项目2 Web开发基础 12
【项目描述】 12
【知识储备】 12
任务2-1MySQL数据库的使用 14
任务2-2静态网页开发 18
任务2-3PHP动态网页开发 24
【项目总结】 26
【拓展思考】 26
第二篇 SQL注入攻击及防护 28
项目3 万能密码登录——Post型注入攻击 28
【项目描述】 28
【知识储备】 28
任务3-1创建数据库 30
任务3-2建立基于Session验证的用户登录网站 32
3-2-1任务实现 32
3-2-2功能测试 36
任务3-3万能密码SQL注入攻击测试 37
3-3-1测试过程 37
3-3-2其他形式的万能密码 38
3-3-3测试分析 38
任务3-4万能密码SQL注入攻击防护 39
3-4-1使用正则表达式限制用户输入 39
3-4-2使用PHP转义函数 41
3-4-3MySQLi参数化查询 42
3-4-4PDO参数化查询 43
【项目总结】 45
【拓展思考】 45
项目4 数据库暴库——Get型注入攻击 46
【项目描述】 46
【知识储备】 46
任务4-1创建数据库 47
任务4-2建立Get方式查询的网站 48
4-2-1任务实现 48
4-2-2功能测试 50
任务4-3数据库暴库攻击测试 50
4-3-1暴数据库 50
4-3-2暴lab数据库的数据表 51
4-3-3暴users表的所有列 52
4-3-4暴users表的数据 52
4-3-5测试分析 53
任务4-4Get型攻击防护 54
4-4-1使用PHP转义函数 54
4-4-2MySQLi参数化查询 54
【项目总结】 56
【拓展思考】 56
项目5 更新密码——二阶注入攻击 57
【项目描述】 57
【知识储备】 57
任务5-1建立具有密码更新功能的网站 57
5-1-1任务实现 58
5-1-2功能测试 62
任务5-2二阶注入攻击测试 63
5-2-1测试过程 63
5-2-2测试分析 65
任务5-3二阶注入攻击防护 66
5-3-1使用PHP转义函数 66
5-3-2MySQLi参数化更新 67
【项目总结】 68
【拓展思考】 68
项目6 Cookie注入攻击 69
【项目描述】 69
【知识储备】 69
任务6-1建立具有Cookie验证功能的网站 70
6-1-1任务实现 70
6-1-2Cookie验证功能测试 73
任务6-2Cookie注入攻击测试 74
6-2-1安装浏览器插件 74
6-2-2Cookie注入攻击过程 75
6-2-3测试分析 77
任务6-3Cookie注入攻击防护 77
【项目总结】 79
【拓展思考】 79
项目7 HTTP头部注入攻击 80
【项目描述】 80
【知识储备】 80
任务7-1创建数据库 81
任务7-2建立具有HTTP头部信息保存功能的网站 82
7-2-1任务实现 82
7-2-2HTTP头部信息保存功能测试 84
任务7-3HTTP头部注入攻击测试 85
7-3-1安装浏览器插件 85
7-3-2HTTP头部注入攻击 86
7-3-3测试分析 88
任务7-4HTTP头部注入攻击防护 88
7-4-1转义函数防注入 89
7-4-2MySQLi参数化插入防注入 89
【项目总结】 92
【拓展思考】 92
第三篇 前端攻击及防护 94
项目8 Session欺骗攻击 94
【项目描述】 94
【知识储备】 94
任务8-1Session欺骗攻击测试 94
8-1-1测试准备 95
8-1-2从浏览器复制SessionID 95
8-1-3Session欺骗攻击实施 96
8-1-4测试分析 97
任务8-2Session欺骗攻击防护 97
8-2-1使用注销机制退出登录 98
8-2-2给Session设置生存时间 98
8-2-3检测User-Agent的一致性 99
8-2-4重置SessionID 101
【项目总结】 103
【拓展思考】 103
项目9 Cookie欺骗攻击 104
【项目描述】 104
【知识储备】 104
任务9-1修改数据库 104
任务9-2Cookie欺骗攻击测试 105
9-2-1测试准备 105
9-2-2测试实施 105
9-2-3测试分析 107
任务9-3Cookie欺骗攻击防护 107
9-3-1设置特殊键值对 107
9-3-2检测User-Agent的一致性 108
【项目总结】 112
【拓展思考】 112
项目10 XSS跨站攻击 113
【项目描述】 113
【知识储备】 113
任务10-1创建数据库 114
任务10-2建立具有接收SessionID功能的网站 115
任务10-3建立具有留言功能的网站 116
10-3-1任务实现 116
10-3-2留言功能测试 119
任务10-4XSS攻击测试 121
10-4-1弹窗式XSS攻击测试 121
10-4-2窃取SessionID攻击测试 122
10-4-3测试分析 124
任务10-5XSS攻击防护 125
10-5-1设置Cookie的HttpOnly属性 125
10-5-2HTML转义 126
10-5-3JavaScript转义 126
【项目总结】 128
【拓展思考】 128
项目11 CSRF跨站伪造请求攻击 129
【项目描述】 129
【知识储备】 129
任务11-1建立具有添加用户功能的网站 130
11-1-1任务实现 130
11-1-2添加用户功能测试 133
任务11-2建立具有CSRF攻击功能的网站 133
任务11-3CSRF攻击测试 134
11-3-1测试实施 134
11-3-2测试分析 134
任务11-4CSRF攻击防护 135
11-4-1设置HTTP Referer验证 135
11-4-2设置确认对话框 141
【项目总结】 143
【拓展思考】 143
项目12 验证码 144
【项目描述】 144
【知识储备】 144
任务12-1Web登录密码破解测试 145
12-1-1准备工作 145
12-1-2测试实施 147
12-1-3测试分析 148
任务12-2建立具有验证码登录验证的网站 148
12-2-1准备工作 149
12-2-2任务实现 149
12-2-3验证码的功能测试 153
12-2-4测试分析 153
【项目总结】 154
【拓展思考】 154
第四篇 文件漏洞及防护 156
项目13 文件上传漏洞 156
【项目描述】 156
【知识储备】 156
任务13-1项目平台搭建 157
13-1-1安装PHP5.3.3 157
13-1-2安装Apache2.2 157
13-1-3服务测试 158
任务13-2建立基于白名单过滤的上传网站 159
13-2-1准备工作 159
13-2-2任务实现 159
13-2-3文件上传功能测试 164
任务13-3文件上传漏洞攻击测试 164
13-3-1Fiddler和浏览器的设置 165
13-3-2MIME上传漏洞攻击 167
13-3-3 0x00截断路径上传漏洞 170
13-3-4测试分析 173
任务13-4文件上传漏洞防护 173
13-4-1判断路径变量 173
13-4-2文件重命名 173
13-4-3设置非Web目录保存文件 174
【项目总结】 175
【拓展思考】 176
项目14 文件下载漏洞 177
【项目描述】 177
【知识储备】 177
任务14-1建立具有文件下载功能的网站 178
14-1-1准备工作 178
14-1-2任务实现 178
14-1-3文件下载功能测试 180
任务14-2文件下载漏洞测试 180
14-2-1测试实施 180
14-2-2测试分析 181
任务14-3文件下载漏洞防护 182
14-3-1设置open_basedir 182
14-3-2设置正则表达式 183
【项目总结】 184
【拓展思考】 184
项目15 文件解析漏洞 185
【项目描述】 185
【知识储备】 185
任务15-1建立基于黑名单过滤的上传网站 186
15-1-1准备工作 186
15-1-2任务实现 186
15-1-3文件上传功能测试 187
任务15-2文件解析漏洞测试 188
15-2-1测试实施 188
15-2-2测试分析 190
任务15-3文件解析漏洞防护 191
15-3-1文件名字符串过滤 191
15-3-2禁止Apache解析 191
【项目总结】 192
【拓展思考】 193
项目16 文件包含漏洞 194
【项目描述】 194
【知识储备】 194
任务16-1建立具有文件包含功能的网站 195
16-1-1任务实现 195
16-1-2文件包含功能测试 201
任务16-2文件包含漏洞测试 202
16-2-1获取系统信息 202
16-2-2结合上传功能运行木马 204
16-2-3远程文件包含 204
16-2-4测试分析 204
任务16-3文件包含漏洞防护 205
16-3-1设置open_basedir 205
16-3-2正则表达式过滤 205
【项目总结】 206
【拓展思考】 207
参考文献 208