一、SQLMAP简介
1、SQLMAP是什么?
SQLMAP是一个开源的自动化SQL注入工具,其主要功能是扫描、发现并利用给定的URL的SQL
注入漏洞。
二、SQLMAP下载安装
官网:http://sqlmap.org
Github:https://github.com/sqlmapproject/sqlmap
注意:安装之前系统需要配置Python环境!
(https://www.python.org/downloads/)
三、SQLMAP使用教程
https://github.com/sqlmapproject/sqlmap/wiki/Usage
四、SQLMAP可以对URL干嘛?
①判断可注入的参数
②判断可以使用哪一种SQL注入技术进行注入
③判断识别数据库的类型
④根据用户的选择,从数据库中读取数据
五、SQLMAP支持的注入技术
①基于布尔的盲注:根据返回页面判断条件真假的注入。
②基于时间的盲注:不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
③基于报错的注入:页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
④基于联合查询的注入:可以使用UNION的情况下的注入
⑤堆查询注入:同时执行多条语句的注入。
六、SQLMAP支持的数据库类型
主要包括一些关系型数据库(RMDBS),如MySQL、Oracle、PostgreSQLMicrosoft SQL Server、
Microsoft Access、lBM DB2、SQLite、FirebirdSybase、SAP MaxDB、Informix、HSQLDB等
七、SQLMAP检测注入漏洞的流程
①网站连通性检测:检测目标的连接状态
②WAF探测:检测网站是否受WAF保护:
③网页稳定性检测:检测网页是否稳定。
④参数动态性检测:检测参数是否具有动态性。
⑤启发式注入检测:探测该参数点是否是动态的、是否为可能的注入点。
八、SQLMAP的误报检测机制
误报检测:SQLMAP的布尔盲注、时间盲注方式判断注入点时,存在误报的可能。为防止误报,
SQLMap引入了误报检测机制。
两个基础检测算法:
①页面相似度对比技术(在各种注入技术中大量使用):在SQLMap检测的整个过程中,会有一个原始
响应的定义,指的是在网站连通性检测的过程中,如果网站成功响应,则把该响应定义为原始响应
(包括状态码、HTTP响应头、HTTP响应体)一个HTTP请求成功响应后,将与原始响应进行对比,
得出对比结果,算法输出为True表示当前响应与原始响应相似,算法输出为False表示当前响应与
原始响应不相似。
②高斯分布识别响应机制(在UNION注入和时间盲注过程中使用):网站的响应是基于逻辑的,如果
一组请求,网站的处理逻辑相同,那么响应几乎也是相同的。如果某一个响应出现了变化,则可以
认为网站处理逻辑变了,这种逻辑的变化,可能正是因为注入成功了。
九、sqlmap的基本使用
常见用法1:-u参数(直接输入目标URL)
命令实例:sqlmap -u"www.test.com/index.php?id=1'
验证过程
①判断可注入的参数
②判断可以用哪种SQL注入技术来注入
③识别出所有存在的注入类型
④尝试去判定数据库版本、开发语言、操作系统版本
常见用法1:-u参数(直接输入目标URL)
①sqlmap -u http://192.168.0.110/page.php?id=10 --current-db //爆当前库
②sqlmap -u http://192.168.0.110/page.php?id=10 -D 数据库名 --tables//爆表名
③sqlmap -u http://192.168.0.110/page.php?id=10 -D 数据库名 -T 表名columns //爆字段
④sqlmap -u http://192.168.0.110/page.php?id=10-D数据库名 -T 表名 -C字段名1,字段名2,字段
名3...(互相用逗号隔开)--dump //显示数据
SQLMAP基本使用实例1:-u参数的用法
目标靶机:SQLi-Labs的less-1
要求:利用SQLMAP实现注入,获取users表中存储的用户名、密码
①爆破当前数据库名
②爆指定数据库中的表名
③爆指定数据表中的字段名
④爆指定字段的值
常见用法2:-r参数(从文本文件中获取http请求)
命令实例:sqlmap -r /usr/a.txt
说明:使用该命令时须指明a.txt(保存着http请求包)文件所在的绝对路径
验证过程:与-u参数类似
①判断可注入的参数
②判断可以用哪种SQL注入技术来注入
③识别出所有存在的注入类型
④尝试去判定数据库版本、开发语言、操作系统版本
目标靶机:SQLi-Labs的less-11
要求:利用SQLMAP实现注入,获取users表中存储的用户名、密码
①利用Burpsuite截取HTTP Request报文
②将截取到的HTTP Request报文保存在文本文件中
③利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆当前数据库的库名
④利用SQLMAP对该文本文件中涉及的目标网站进行注入--指定数据库的表名
⑤利用SQLMAP对该文本文件中涉及的目标网站进行注入--指定数据表的字段名
⑥利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定字段的值
常见用法3:-m参数(从文件中取出保存的url进行检测)
命令实例:sqlmap -m /usr/b.txt说明:使用该命令时须指明b.txt(保存着多项URL)文件所在的绝对路径
验证过程:与-u参数类似
①判断可注入的参数
②判断可以用哪种SQL注入技术来注入
③识别出所有存在的注入类型
④尝试去判定数据库版本、开发语言、操作系统版本