sqlmap

一. SQLMap安装

1.1 任务描述

​ 如何提高进行SQL注入的效率?利用工具是一个很好的选择。SQLMap就是进行SQL注入的工具。

1.2 课程目标

➢了解SQLMap的原理、主要特点。

➢掌握SQLMap的安装。

1.3 SQLMap简介

1.3.1 SQLMap定义

​ SQLMap是开源的自动化SQL注入工具,由Python写成。它可以自动探测和利用SQL注入漏洞来接管数据库服务器,它配备了一个强大的探测引擎,为最终渗透测试人员提供很多功能,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。

1.3.2 SQLMap特点

1.3.2.1 支持的数据库类型

​ sqlmap完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多种数据库管理系统。

1.3.3 SQLMap的可以测试的几个参数

​ sqlmap可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。

​ sqlmap可以测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。

​ sqlmap也可以设定HTTP(S)请求的并发数,来提高盲注时的效率。

1.3.3.1 支持的注入模式

​ sqlmap支持五种不同的注入模式:

​ 1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。

​ 2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

​ 3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

​ 4、联合查询注入,可以使用union的情况下的注入。

​ 5、堆查询注入,可以同时执行多条语句的执行时的注入。

1.3.3.2 其他

⚫在数据库证书、IP地址、端口和数据库名等条件允许的情况下支持不通过SQL注入点而直接连接数据库。

⚫支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。

⚫支持自动识别密码哈希格式并通过字典破解密码哈希。

⚫支持多种下载模式,比如完全地下载某个数据库中的某个表,或者只下载某个表中的某几列,甚至只下载某一列中的部分数据均可以进行,这完全取决于用户的选择。

⚫支持在数据库管理系统中搜索指定的数据库名、表名或列名。

⚫部分情况下,即当数据库管理系统是MySQL、PostgreSQL或Microsoft SQL Server时,支持下载或上传文件。

⚫部分情况下,即当数据库管理系统是MySQL、PostgreSQL或Microsoft SQL Server时,支持执行任意命令并回现标准输出。

1.4 SQLMap参数说明

1.4.1 输出级别(Output verbosity)的参数

参数:-v。

​ Sqlmap的输出信息按从简到繁共分为7个级别,依次为0、1、2、3、4、5和6。使用参数“-v <级别>”来指定某个等级,如使用参数“-v 6”来指定输出级别为6。默认输出级别为1。各个输出级别的描述如下:

​ 0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL];

​ 1:同时显示普通信息[INFO]和警告信息[WARNING];

​ 2:同时显示调试信息[DEBUG];

​ 3:同时显示注入使用的攻击荷载;

​ 4:同时显示HTTP请求;

​ 5:同时显示HTTP响应头;

​ 6:同时显示HTTP响应体。各个级别输出的信息详细到什么程度,还需要自己尝试下,亲眼见到,才会有明确的认识。

1.4.2 指定目标的参数

Sqlmap运行时必须指定至少一个目标,支持一次指定多个目标。有以下几种指定目标的方式:

1.4.2.1 直接连接数据库参数:-d

​ 使用参数“-d”直接连接数据库,该参数后跟一个表示数据库的字符串,该字符串有以下两种格式:

​ (1).当数据库管理系统是MySQL、Oracle、Microsoft SQL Server或PostgreSQL等时格式为:DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME

​ (2).当数据库管理系统是SQLite、Microsoft Access或Firebird等时格式为:DBMS://DATABASE_FILEPATH

1.4.2.2 指定目标URL参数:-u 或–url

​ 使用参数“-u”或“–url”指定一个URL作为目标,该参数后跟一个表示URL的字符串,可以是http协议也可以是https协议,还可以指定端口,如:python sqlmap.py -u “http://192.168.56.102:8080/user.php?id=0”

1.4.2.3 从Burp或WebScarab的代理日志中解析目标参数:-l

​ 使用参数“-l”指定一个Burp或WebScarab的代理日志文件,Sqlmap将从日志文件中解析出可能的攻击目标,并逐个尝试进行注入。该参数后跟一个表示日志文件的路径。Burp默认不记录日志,想要记录日志需要手动开启,设置方法如下图所示:

image-20201021161832410

​ 只用勾选代理中的请求数据就足够了,日志文件路径可随意设置,这里我设置日志文件名为proxy.log,放在用户主目录中。

​ 设置浏览器的代理为Burp,随便浏览几个网页后发现proxy.log竟然已经有70多K大,查看其内容,部分输出如下:

image-20201021162150784

​ 可以看到该日志文件不仅记录了GET参数,还记录了cookie和POST参数。现在使用如下命令让Sqlmap解析该日志文件,自动寻找目标,检测注入漏洞:python sqlmap/sqlmap.py -l…/proxy.log

注意日志文件的路径要写正确。执行该命令时,每找到一个可能的攻击目标,Sqlmap都会询问是否要检测该目标,默认回答为“Y”,想要测试该目标,直接按回车键就行。

qlmap/sqlmap.py -l…/proxy.log

注意日志文件的路径要写正确。执行该命令时,每找到一个可能的攻击目标,Sqlmap都会询问是否要检测该目标,默认回答为“Y”,想要测试该目标,直接按回车键就行。

​ 当日志较大时会有很多可能目标,虽然有询问机制但依旧麻烦,因为不能一路按回车而要进行判断。若是可以对日志进行过滤就好了,sqlmap的确可以做到,参数为“–scope”。

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页