随着IT的发展,Web技术从传统的网站领域延伸到了手机App领域。而大部分网站都是采用数据库来存储数据,这使得SQL注入技术成为Web安全防护的重点。为了保证网站的安全,开发人员和安全人员需要对网站上成百上千个网页逐一进行检查,以验证其对各种SQL注入攻击的防护效果,但这会带来庞大的工作量。sqlmap是一款开源的SQL注入自动化测试工具,它不仅可以大幅度减少检测时间,而且还可以验证漏洞存在的危害性,在Web安防领域有着广泛的应用。本书结合大量示例,详细介绍了sqlmap注入测试的相关知识。
本书共14章,分为3篇。第1篇“测试准备”,主要介绍sqlmap环境配置、指定目标、连接目标、探测注入点及数据库类型等相关内容;第2篇“信息获取”,主要介绍如何基于sqlmap获取4种主流数据库信息(MySQL、MSSQL、Access和Oracle),以及如何手工获取数据库信息;第3篇“高级技术”,主要介绍sqlmap所使用的注入技术、访问后台数据库管理系统、优化注入、保存和输出数据、规避防火墙等相关内容。
本书适合渗透测试人员、网络维护人员、网站开发人员和信息安全爱好者阅读。通过本书的学习,可以帮助读者了解和掌握SQL注入的测试方式和注入技术,以及危害性评估等相关知识。
从理论、应用和实践三个维度详解sqlmap实施数据库注入的相关知识;
通过260个操作实例,一步步带领读者从实践中进行学习;
涵盖7类注入技术、4种主流数据库以及各类优化技术;
涵盖MySQL、MSSQL、Access、Oracle四种主流数据库;
详细讲解sqlmap支持的七种数据库注入技术;
提供助记提示,帮助读者记忆繁杂的选项;
完整展现SQL注入的前中后三个阶段的各项技术;
赠送配套的思维导图以及知识点串讲视频;
提供后续的内容更新服务和完善的工具获取方式;
提供QQ群、论坛和E-mail互动交流方式。
随着信息技术的发展,网站(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服务器和数据库服务器的运行产生一定的影响,因此应该避免在生产环境中进行测试,而应选择在实验环境中进行测试。
* 在测试之前建议了解相关法律,避免侵犯他人权益甚至触犯法律。
感谢
感谢在本书编写和出版过程中给予我们大量帮助的各位编辑!限于作者水平,加之写作较为仓促,书中可能存在一些疏漏和不足之处,敬请各位读者批评、指正。
编著者
朱振方 博士,教授,博士生导师,“计算机科学与技术”一流专业建设点负责人。现任山东交通学院信息科学与电气工程学院计算机系主任,山东交通学院融媒体智能计算与安全技术研究中心主任。主要研究兴趣有网络信息安全和自然语言处理等。
张鹏 精通Web安全技术,熟悉OWASP TOP10漏洞的原理与修复方案,熟悉渗透测试的步骤、方法和流程。对各类操作系统和应用平台的弱点有较深入的理解。熟悉常见脚本语言,能够进行Web渗透测试,以及恶意代码的检测和分析。
前言
第1篇 测试准备
第1章 sqlmap环境配置2
1.1 sqlmap基础知识2
1.1.1 sqlmap简介2
1.1.2 sqlmap注入流程2
1.2 安装sqlmap3
1.2.1 下载sqlmap安装包3
1.2.2 在Windows中安装sqlmap4
1.2.3 在Linux中安装sqlmap6
1.3 启动sqlmap7
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 更新sqlmap14
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 指定目标URL21
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/IPS66
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 使用手机UA97
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 获取数据