首页>参考读物>计算机科学与技术>安全

从实践中学习sqlmap数据库注入测试
作者 : 朱振方,张鹏 编著
出版日期 : 2022-03-09
ISBN : 978-7-111-70062-3
定价 : 109.80元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 380
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

随着IT的发展,Web技术从传统的网站领域延伸到了手机App领域。而大部分网站都是采用数据库来存储数据,这使得SQL注入技术成为Web安全防护的重点。为了保证网站的安全,开发人员和安全人员需要对网站上成百上千个网页逐一进行检查,以验证其对各种SQL注入攻击的防护效果,但这会带来庞大的工作量。sqlmap是一款开源的SQL注入自动化测试工具,它不仅可以大幅度减少检测时间,而且还可以验证漏洞存在的危害性,在Web安防领域有着广泛的应用。本书结合大量示例,详细介绍了sqlmap注入测试的相关知识。
本书共14章,分为3篇。第1篇“测试准备”,主要介绍sqlmap环境配置、指定目标、连接目标、探测注入点及数据库类型等相关内容;第2篇“信息获取”,主要介绍如何基于sqlmap获取4种主流数据库信息(MySQL、MSSQL、Access和Oracle),以及如何手工获取数据库信息;第3篇“高级技术”,主要介绍sqlmap所使用的注入技术、访问后台数据库管理系统、优化注入、保存和输出数据、规避防火墙等相关内容。
本书适合渗透测试人员、网络维护人员、网站开发人员和信息安全爱好者阅读。通过本书的学习,可以帮助读者了解和掌握SQL注入的测试方式和注入技术,以及危害性评估等相关知识。

图书特色

广告语:
从理论、应用和实践三个维度讲解,通过教学视频、思维导图和260个操作实例一步步带领读者学习,涵盖6种注入测试技术、4种主流数据库信息的获取方法以及各种高级技术

图书前言

  随着信息技术的发展,网站(Web)技术广泛应用于人们的生活和工作中。无论是传统的网站还是手机App,它们都借助Web技术从服务器上读写数据。但Web服务器往往存在诸多潜在的安全风险和隐患,如SQL注入攻击、跨站脚本攻击和命令注入攻击等。尤其是Web服务器广泛使用数据库技术,这导致SQL注入攻击成为最常见的攻击方式。
  一个Web服务器上可能存储着成百上千个网页,用于接收用户数据,并从数据库中读写数据,只要其中一个网页对用户数据过滤得不严格,就会形成SQL注入漏洞,加之SQL注入的方式众多,这些因素都导致手动测试的工作量巨大。
  sqlmap是一款业界知名的开源自动化SQL注入测试工具,支持当下流行的39种数据库。它不但提供多种目标指定方式,而且还支持多目标批量测试。另外,它还能利用6种主流的注入技术自动探测目标存在的SQL注入漏洞,并验证漏洞的危害程度。
  本书按照SQL注入的测试流程,详细介绍sqlmap的使用方法。本书对sqlmap提交的参数进行详细分析,明确SQL注入的防范机制,另外还重点展现SQL注入带来的各种危害,从而帮助安防人员更好地进行防范。
本书特色
  1.内容可操作性强
  SQL注入是一门操作性非常强的技术,为了方便读者学习和理解,本书遵循SQL注入的流程来合理安排内容。首先介绍各项准备工作;然后介绍如何指定目标,给出设置连接目标的方式并探测注入点;最后介绍如何利用注入漏洞获取信息,并分析在该过程中采用的各项技术。书中在介绍每个功能时都配以实例,以帮助读者通过实践的方式进行理解和学习。
  2.涵盖不同类型的数据库信息获取方法
  不同类型的数据库获取信息的方式和侧重点有所不同,本书详细介绍MySQL、MSSQL、Access和Oracle这4种常见的主流数据库的信息获取方法,以帮助读者掌握SQL注入防护的重点。
  3.涉及多种SQL攻击技术和思路
  为了帮助读者了解SQL注入技术,本书详细介绍sqlmap使用的6种注入技术,即基于布尔的盲注、基于错误的注入、基于时间的盲注、联合查询注入、堆叠注入和DNS注入,另外还会介绍一种特殊的注入思路——二级SQL注入。
  4.提供完善的技术支持和售后服务
  本书提供QQ交流群(343867787)和论坛(bbs.daxueba.net),供读者交流和讨论学习中遇到的各种问题。读者还可以关注微博账号(@大学霸IT达人)获取图书内容更新信息及相关技术文章。另外,本书还提供售后服务邮箱hzbook2017@163.com,读者在阅读的过程中若有疑问,也可以通过该邮箱获得帮助。
本书内容
  第1篇 测试准备
  本篇涵盖第1~4章,主要介绍学习SQL注入攻击前的各项准备工作,如环境配置、指定目标、连接目标、探测注入漏洞及数据库类型等。
  第2篇 信息获取
  本篇涵盖第5~9章,主要介绍如何获取MySQL、MSSQL、Access和Oracle这4种常见的数据库服务器的重要信息。
  第3篇 高级技术
  本篇涵盖第10~14章,主要介绍sqlmap注入攻击所依赖的技术,并介绍如何验证漏洞的危害性以及如何提升sqlmap的测试效率,如优化注入、保存数据、导出数据和规避防火墙等。
本书配套资源获取方式
  本书涉及的教学视频、思维导图、工具和软件需要读者自行获取,获取途径有以下几种:
* 根据书中对应章节给出的网址进行下载;
* 加入本书QQ交流群获取;
* 访问论坛bbs.daxueba.net获取;
* 登录机械工业出版社华章分社网站www.hzbook.com,在该网站上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到“配书资源”下载链接。
本书内容更新文档获取方式
  为了让本书内容紧跟技术发展和软件更新的步伐,笔者会对书中的相关内容进行不定期更新,并发布对应的电子文档。需要的读者可以加入QQ交流群获取,也可以通过机械工业出版社华章分社网站上的“本书配套资源”链接进行下载。
本书读者对象
* 渗透测试技术人员;
* 网络安全和维护人员;
* 信息安全技术爱好者;
* 网站开发人员;
* 高校相关专业的学生;
* 专业培训机构的学员。
阅读提示
* sqlmap是一款开源工具,会不定时进行版本更新,学习之前建议先按照1.2节的介绍下载和安装其最新版本。如果其功能有较大变化,我们会发布增补文档供读者下载。
* SQL注入的部分操作会对Web服务器和数据库服务器的运行产生一定的影响,因此应该避免在生产环境中进行测试,而应选择在实验环境中进行测试。
* 在测试之前建议了解相关法律,避免侵犯他人权益甚至触犯法律。
感谢
  感谢在本书编写和出版过程中给予我们大量帮助的各位编辑!限于作者水平,加之写作较为仓促,书中可能存在一些疏漏和不足之处,敬请各位读者批评、指正。
  
  编著者

上架指导

计算机\安全

封底文字

本书特色
详解MySQL、MSSQL、Access和Oracle这4种主流数据库信息的获取;
详解sqlmap支持的6种数据库注入测试技术;
提供助记提示,帮助读者记忆大量繁杂的选项;
完整展现SQL注入测试的前、中、后3个阶段涉及的技术;
赠送配套的思维导图和知识点串讲视频;
提供后续的内容更新服务和完善的工具获取方式;
提供QQ群、论坛和E-mail互动交流方式。

配套资源获取方式
本书教学视频和思维导图等超值资源需要读者自行下载,下载方式见前言中的详细说明。

作者简介

朱振方,张鹏 编著:朱振方 博士,教授,博士生导师,“计算机科学与技术”国家级一流专业建设点负责人。现任山东交通学院信息科学与电气工程学院计算机系主任,山东交通学院融媒体智能计算与安全技术研究中心主任。主要研究兴趣有网络信息安全和自然语言处理等。

张鹏 精通Web安全技术,熟悉OWASP TOP10漏洞的原理与修复方案,熟悉渗透测试的步骤、方法和流程。对各类操作系统和应用平台的弱点有较深入的理解。熟悉常见脚本语言,能够进行Web渗透测试,以及恶意代码的检测和分析。

图书目录

前言
第1篇 测试准备
第1章 sqlmap环境配置 2
1.1 sqlmap基础知识 2
1.1.1 sqlmap简介 2
1.1.2 sqlmap注入流程 2
1.2 安装sqlmap 3
1.2.1 下载sqlmap安装包 3
1.2.2 在Windows中安装sqlmap 4
1.2.3 在Linux中安装sqlmap 6
1.3 启动sqlmap 7
1.3.1 标准模式 8
1.3.2 交互模式 8
1.3.3 向导模式 10
1.3.4 快速模式 10
1.4 sqlmap使用技巧 10
1.4.1 查看帮助信息 11
1.4.2 查看版本信息 13
1.4.3 使用短记忆法 13
1.4.4 更新sqlmap 14
1.4.5 使用INI配置文件 15
1.4.6 设置冗余级别 16
1.4.7 检查依赖 17
第2章 指定目标 20
2.1 单个目标 20
2.1.1 URL地址格式 20
2.1.2 指定目标URL 21
2.2 批量测试 23
2.2.1 指定多个目标 23
2.2.2 发出警报 25
2.2.3 检测到注入漏洞时报警 26
2.3 日志文件 27
2.3.1 捕获日志文件 27
2.3.2 指定日志文件 35
2.3.3 过滤日志文件中的目标 36
2.4 HTTP请求文件 37
2.4.1 使用BurpSuite抓包 37
2.4.2 指定HTTP请求文件 39
2.5 从谷歌搜索引擎中获取目标 40
2.5.1 谷歌基础语法 40
2.5.2 指定搜索目标 42
2.5.3 指定测试页面 44
2.6 爬取网站 45
2.6.1 指定爬取深度 45
2.6.2 排除爬取页面 46
2.6.3 设置临时文件目录 46
第3章 连接目标 48
3.1 设置认证信息 48
3.1.1 指定认证类型 48
3.1.2 指定认证凭证 49
3.1.3 指定私钥文件 49
3.2 代理网络 50
3.2.1 使用已有的代理服务器 50
3.2.2 使用新的代理服务器 51
3.2.3 指定代理服务器 52
3.2.4 指定代理凭证 58
3.2.5 指定代理列表 59
3.2.6 忽略系统级代理 60
3.3 Tor匿名网络 60
3.3.1 搭建Tor匿名网络 60
3.3.2 使用Tor匿名网络 61
3.3.3 检查Tor匿名网络 62
3.3.4 设置Tor代理端口 62
3.3.5 设置Tor代理类型 63
3.4 处理连接错误 63
3.4.1 忽略HTTP错误状态码 63
3.4.2 忽略重定向 65
3.4.3 忽略连接超时 65
3.5 检测WAF/IPS 66
3.6 调整连接选项 68
第4章 探测注入漏洞及数据库类型 69
4.1 探测GET参数 69
4.1.1 GET参数简介 69
4.1.2 使用sqlmap探测 71
4.1.3 手动探测 73
4.2 探测POST参数 76
4.2.1 POST参数简介 76
4.2.2 指定POST参数 77
4.2.3 自动搜索POST参数 78
4.2.4 从HTTP请求文件中读取POST参数 81
4.2.5 手动判断 82
4.3 探测Cookie参数 85
4.3.1 Cookie参数简介 85
4.3.2 指定Cookie参数 85
4.3.3 指定包括Cookie的文件 88
4.3.4 忽略Set-Cookie值 89
4.3.5 加载动态Cookie文件 90
4.3.6 手动判断 90
4.4 探测UA参数 92
4.4.1 UA参数简介 92
4.4.2 指定UA参数 94
4.4.3 使用随机UA参数 96
4.4.4 使用手机UA 97
4.4.5 手动判断 99
4.5 探测Referer参数 101
4.5.1 Referer参数简介 101
4.5.2 指定Referer参数 101
4.5.3 手动判断 103
4.6 添加额外的HTTP头 105
4.6.1 指定单个额外的HTTP头 105
4.6.2 指定多个额外的HTTP头 106
4.7 指定测试参数 106
4.7.1 指定可测试的参数 106
4.7.2 跳过指定的参数 108
4.7.3 跳过测试静态参数 109
4.7.4 使用正则表达式排除参数 109
4.7.5 指定测试参数的位置 109
第2篇 信息获取
第5章 获取MySQL数据库信息 112
5.1 MySQL数据库简介 112
5.2 获取数据库标识 112
5.3 获取服务器主机名 113
5.4 获取数据库的用户名 115
5.4.1 获取当前连接数据库的用户名 115
5.4.2 获取数据库的所有用户名 116
5.5 获取数据库用户的密码 117
5.5.1 获取用户密码的哈希值 118
5.5.2 在线破解哈希值 119
5.5.3 使用其他工具破解哈希值 121
5.6 获取数据库的名称 123
5.6.1 获取当前数据库的名称 123
5.6.2 获取所有数据库的名称 124
5.7 获取数据表 126
5.7.1 获取所有的数据表 126
5.7.2 获取指定数据库中的数据表 128
5.8 获取数据库架构 129
5.8.1 获取所有数据库的架构 129
5.8.2 获取指定数据库的架构 130
5.8.3 排除系统数据库 132
5.9 获取数据表中的列 133
5.9.1 获取所有的列 133
5.9.2 获取指定数据表的列 135
5.10 获取数据表中的内容 136
5.10.1 获取数据表中的全部内容 136
5.10.2 获取指定的数据表中的内容 138
5.10.3 获取所有的数据表中的内容 140
5.10.4 过滤数据表中的内容 141
5.10.5 获取指定列的数据 144
5.10.6 排除指定列的数据 145
5.10.7 获取注释信息 146
5.10.8 指定导出的数据格式 147
5.11 获取数据表的条目数 149
5.11.1 获取所有数据表的条目数 149
5.11.2 获取指定数据表的条目数 151
5.12 获取数据库的所有信息 152
5.13 搜索数据库信息 152
第6章 获取MSSQL数据库信息 158
6.1 获取数据库标识 158
6.2 检测是否为DBA用户 159
6.3 获取数据库的名称 161
6.3.1 获取当前数据库的名称 161
6.3.2 获取所有数据库的名称 162
6.4 获取数据表的名称 163
6.4.1 获取所有数据表的名称 164
6.4.2 获取指定数据库中的数据表的名称 165
6.5 获取数据库架构 167
6.5.1 获取所有数据库的架构 167
6.5.2 获取指定数据库的架构 169
6.5.3 排除系统数据库 171
6.6 获取数据表中的列 172
6.6.1 获取所有数据表中的列 172
6.6.2 获取指定数据表中的列 174
6.7 获取数据表中的内容 175
6.7.1 获取指定数据表中的内容 175
6.7.2 获取所有数据表中的内容 178
6.7.3 获取指定列的内容 178
6.7.4 排除指定列的内容 179
6.7.5 获取特定内容 179
6.7.6 获取数据表的条目数 181
6.8 获取数据库用户的权限 183
6.9 获取数据库用户和密码 184
6.9.1 获取数据库用户 184
6.9.2 获取用户密码 185
6.9.3 使用hashcat破解MSSQL密码的哈希值 187
第7章 获取Access数据库信息 189
7.1 Access数据库简介 189
7.2 指纹识别 189
7.3 暴力破解数据表名 190
7.3.1 数据表的字典列表 191
7.3.2 手动暴力破解表名 193
7.4 暴力破解数据表中的列 194
7.4.1 数据表中的列字典 194
7.4.2 手动暴力破解列名 196
7.5 导出数据表中的列 198
7.5.1 暴力破解列内容 198
7.5.2 手动暴力破解 200
第8章 获取Oracle数据库信息 206
8.1 指纹信息 206
8.2 获取数据库服务的主机名 207
8.3 获取数据库的用户 208
8.3.1 获取当前数据库的用户 209
8.3.2 获取所有数据库的用户 210
8.4 获取数据库用户的密码 211
8.5 获取数据库用户的角色 213
8.6 获取数据库用户的权限 215
8.6.1 判断是否为DBA权限 215
8.6.2 获取用户权限 216
8.7 获取数据库的名称 217
8.7.1 获取当前连接的数据库的名称 218
8.7.2 获取所有的数据库的名称 219
8.8 获取数据表 221
8.8.1 获取所有的数据表 221
8.8.2 获取指定数据库中的数据表 223
8.9 获取数据表结构 224
8.10 获取数据表信息 226
8.10.1 获取数据表列 226
8.10.2 获取数据表内容 228
8.10.3 获取指定列的数据 230
8.10.4 排除指定列的数据 231
8.10.5 获取数据表的条目数 232
第9章 使用SQL语句获取数据库信息 234
9.1 SQL语句 234
9.1.1 操作数据库语句 234
9.1.2 操作数据表语句 235
9.2 数据库变量与内置函数 235
9.2.1 全局变量 236
9.2.2 内置函数 237
9.3 执行SQL语句的方式 238
9.3.1 直接执行SQL语句 238
9.3.2 交互式SQL Shell模式 239
9.3.3 使用SQL文件 241
9.4 获取数据库信息 242
9.4.1 获取数据库版本 243
9.4.2 查询用户 243
9.4.3 查询当前操作系统 243
9.4.4 查询数据库的安装目录 243
9.4.5 查看当前数据库 244
9.4.6 查看数据表中的内容 244
9.4.7 查看系统文件 245
第3篇 高级技术
第10章 注入技术 248
10.1 基于布尔的盲注 248
10.1.1 判断及指定注入类型 248
10.1.2 设置匹配的字符串 251
10.1.3 设置不匹配的字符串 251
10.1.4 设置匹配的正则表达式 251
10.1.5 设置匹配的状态码 252
10.2 基于错误的注入 252
10.2.1 判断并指定注入类型 252
10.2.2 比较网页内容 255
10.2.3 比较网页标题 255
10.3 基于时间的盲注 256
10.3.1 判断并指定注入类型 256
10.3.2 设置数据库响应延时 259
10.4 联合查询注入 259
10.4.1 判断并指定注入类型 260
10.4.2 设置UNION列数 263
10.4.3 设置UNION字符 264
10.4.4 设置UNION查询表 266
10.5 堆叠注入 267
10.5.1 堆叠注入的局限性 267
10.5.2 实施堆叠注入 268
10.6 DNS注入 270
10.6.1 DNS注入原理 270
10.6.2 DNS注入要求 271
10.6.3 实施DNS注入 272
10.7 二级SQL注入 282
10.7.1 二级SQL注入原理 282
10.7.2 设置二级响应URL地址 283
10.7.3 加载二级SQL注入请求文件 284
10.8 自定义注入 284
10.8.1 设置问题答案 284
10.8.2 使参数值无效 286
10.8.3 自定义Payload 287
10.8.4 自定义函数注入 289
10.8.5 设置风险参数 289
第11章 访问后台数据库管理系统 290
11.1 连接数据库 290
11.1.1 直接连接数据库 290
11.1.2 指定数据库 291
11.2 执行操作系统命令 293
11.2.1 直接执行操作系统命令 293
11.2.2 获取交互式Shell 295
11.2.3 指定操作系统类型 297
11.2.4 指定Web服务器的根目录 299
11.3 访问文件系统 300
11.3.1 读取文件 300
11.3.2 写入文件 302
11.3.3 暴力枚举文件 304
11.4 访问Windows注册表 305
11.4.1 添加注册表项 306
11.4.2 读取注册表项 307
11.4.3 删除注册表项 309
11.4.4 辅助选项 310
11.5 建立带外TCP连接 311
11.5.1 创建远程会话 312
11.5.2 利用远程代码执行漏洞MS08-068 315
11.5.3 利用存储过程堆溢出漏洞MS09-004 318
11.5.4 提升权限 321
第12章 使用sqlmap优化注入 325
12.1 跳过低成功率的启发式测试 325
12.2 优化sqlmap性能 326
12.2.1 使用HTTP/HTTPS持久连接 326
12.2.2 HTTP NULL连接 326
12.2.3 设置HTTP请求线程 327
12.2.4 预测普通查询输出 327
12.2.5 启动所有优化 329
12.3 设置超时 330
12.3.1 设置请求失败的时间间隔 330
12.3.2 设置超时时间 330
12.3.3 尝试次数 330
12.4 处理请求和响应 331
12.4.1 预处理请求 331
12.4.2 后处理响应 331
第13章 保存和输出数据 332
13.1 保存HTTP数据包信息 332
13.1.1 保存为文本文件 332
13.1.2 保存为HAR文件 333
13.2 处理输出数据 334
13.2.1 使用HEX函数返回输出数据 334
13.2.2 获取二进制数据 335
13.2.3 声明包含Base64编码数据的参数 336
13.2.4 自定义SQL注入字符集 338
13.2.5 强制编码输出的数据 338
13.2.6 禁止彩色输出 338
13.2.7 不对未知字符进行编码 339
13.2.8 显示估计的完成时间 339
13.2.9 显示数据库错误信息 340
13.3 指定输出位置 341
13.3.1 指定多目标模式下CSV结果文件的保存位置 341
13.3.2 指定输出目录 344
13.3.3 指定临时文件的存储位置 345
13.4 会话管理 346
13.4.1 加载会话 346
13.4.2 清空会话 347
13.4.3 离线模式 348
13.4.4 清理痕迹 349
第14章 规避防火墙 350
14.1 设置安全模式 350
14.1.1 使用安全网址 350
14.1.2 从文件加载安全的HTTP请求 351
14.1.3 指定POST方式携带的数据 351
14.2 绕过CSRF防护 352
14.2.1 指定控制Token的参数 352
14.2.2 指定获取Token的网址 353
14.2.3 指定访问反CSRF令牌页的请求方法 353
14.2.4 设置反CSRF令牌重试次数 354
14.3 其他绕过防护系统的方式 354
14.3.1 使用HTTP污染技术 354
14.3.2 使用chunked传输编码方式 355
14.3.3 根据Python代码修改请求 356
14.3.4 关闭URL编码 356
14.4 使用脚本绕过防火墙 356
14.4.1 查看支持的脚本 357
14.4.2 使用Tamper脚本 361

教学资源推荐
作者: 桂小林 编著
作者: David Challener;Kent Yoder;Ryan Catherman;David Safford;Leendert Van Doorn
参考读物推荐
作者: [美] 布莱恩•罗素(Brian Russell) 德鲁•范•杜伦(Drew Van Duren) 著
作者: 张威 张耀疆 赵锐 等编著