购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6
sqlmap渗透测试工具

本节主要介绍sqlmap在实战中经常使用的命令及技巧,通过实战总结经验,帮助大家快速使用sqlmap神器,快速提升大家在项目中使用的效率。

2.6.1 sqlmap的介绍

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,以及针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件,甚至可以通过外带数据连接的方式执行操作系统命令。

2.6.2 sqlmap的安装

请前往sqlmap官方网站下载对应文件,如图2.55所示。

图2.55 sqlmap下载

下载好之后,解压到指定目录,用Python去运行sqlmap.py文件。注意Python需要是2.6或2.7版本,Python安装方法此处不再赘述,成功运行后如图2.56所示。

图2.56 sqlmap运行成功界面

2.6.3 sqlmap常用参数

sqlmap输入结果时会用到-v参数,有7个等级,默认的等级是1,详细如下。

●0:只显示Python的tracebacks信息,错误信息和关键信息。

●1:显示普通信息【INFO】和警告信息【WARNING】。

●2:同时显示调试信息【DEBUG】。

●3:同时显示注入使用的攻击载荷。

●4:同时显示HTTP请求。

●5:同时显示HTTP响应头。

●6:同时显示HTTP响应体。

sqlmap中level等级分为1~5,默认情况下等级为1,检查Cookie时等级最少为2,检查User-Agent时等级最少为3,5级包含的Payload最多,会自动破解出Cookie、XFF等头部注入,对应它的速度也比较慢。

sqlmap中risk等级分为0~3,默认情况下等级为1,会检测大部分的测试语句,等级为2时会增加基于事件的测试语句,等级为3时会增加or语句的SQL注入测试。

sqlmap支持以下5种不同的注入模式:基于布尔的盲注,即可以根据返回页面判断条件真假的注入;基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句判断时间延迟语句是否执行(页面返回时间是否增加);基于报错注入,即页面会返回错误信息,或者把注入语句的结果直接返回在页面中;联合查询注入,可以使用UNION情况下的注入;堆查询注入,可以同时执行多条语句执行时的注入。

下面以MySQL数据库为例,它一般会用以下语句。

●检测注入点:sqlmap-u"www.test.com/?id=1"。

●指定检测参数:sqlmap-u"www.test.com/?id=1&page=2"-p id。

●识别数据库类型:sqlmap-u"www.test.com/?id=1"-f。

●识别数据库版本:sqlmap-u"www.test.com/?id=1"-b。

●列出当前数据库:sqlmap-u"www.test.com/?id=1"——current-db。

●列出所有数据库:sqlmap-u"www.test.com/?id=1"——dbs。

●列出指定数据库的表:sqlmap-u"www.test.com/?id=1"——D test——tables。

●列出指定表的字段:sqlmap-u"www.test.com/?id=1"——D test-T user——columns。

●避开waf等设备:sqlmap-u"www.test.com/?id=1"——tamper xxx.py。

sqlmap自带的Python文件在tamper目录下,如图2.57所示。

图2.57 tamper列表

获取交互式如下。

需要具备三个条件:必须是数据库root权限;已经获取网站的路径;GPC设置为off。

指定注入模式如下。

●B:Boolean-based blind SQL injection(布尔型注入)。

●E:Error-based SQL injection(报错型注入)。

●U:UNION query SQL injection(可联合查询注入)。

●S:Stacked queries SQL injection(可多语句查询注入)。

●T:Time-based blind SQL injection(基于时间延迟注入)。

file协议写shell sqlmap-u“www.test.com/?id=1”——file-write“本地文件”——file-dest“网站绝对路径+文件名”。

在检测POST型注入的时候一般会将POST包放入一个txt文档里。

检测注入点如下。

Cookie型注入如下。

2.6.4 sqlmap实战

在name参数中,输入“kobe”后出现报错信息,如图2.58所示。

图2.58 报错注入

在sqlmap中检查注入点,语句如下。

经测试发现以下四种注入方式及数据库和服务器的版本信息,如图2.59所示。

图2.59 注入方式

我们指定联合查询去查看一下当前数据库,如图2.60所示。

图2.60 当前数据库

查看当前用户是root@localhost,如图2.61所示。

图2.61 查看当前用户

查看Pikachu数据库下的所有表,如图2.62所示。

图2.62 查看所有表

查看Pikachu数据库users表下的所有字段,如图2.63所示。

图2.63 查看所有字段

查看Pikachu数据库users表下的所有数据,得到三个用户的账号、密码,如图2.64所示。

图2.64 查看所有数据

查看数据库是不是dba权限,如图2.65所示。

图2.65 dba权限

在PHPinfo信息里找到了网站路径,已经具备获取shell的条件,获取交互式shell,如图2.66所示。

图2.66 交互式shell

也可以用写入文件的方法,将准备好的冰蝎(Behinder)木马传上去,如图2.67所示。

图2.67 上传木马

访问目标文件已经成功解析,如图2.68所示。

图2.68 解析成功

启动冰蝎,成功连接shell,如图2.69所示。

图2.69 冰蝎连接 qN+lhVt/EPjUpeMpcYlKBcX43vtLHcd8Fpjbv6YwJmJXQ36qrVgRtkRmrcaXGjvC

点击中间区域
呼出菜单
上一章
目录
下一章
×