本节主要介绍sqlmap在实战中经常使用的命令及技巧,通过实战总结经验,帮助大家快速使用sqlmap神器,快速提升大家在项目中使用的效率。
sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,以及针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件,甚至可以通过外带数据连接的方式执行操作系统命令。
请前往sqlmap官方网站下载对应文件,如图2.55所示。
图2.55 sqlmap下载
下载好之后,解压到指定目录,用Python去运行sqlmap.py文件。注意Python需要是2.6或2.7版本,Python安装方法此处不再赘述,成功运行后如图2.56所示。
图2.56 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型注入如下。
在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 冰蝎连接