一、SQLmap简介
Sqlmap是一个有python编写的开源渗透工具,用于SQL漏洞检测,是一款功能强大的Sql注入漏洞利用工具。
可以检测的数据类型众多,包括:access、mssql、mysql、Oracle、postgraSql、sqlite等。
可以进行类型众多的注入利用,包括Sql盲注、union注入、报错注入、延时注入、cookie注入等。
其他功能:命令执行、枚举用户、检测权限、自动破解等。
二、Sqlmap的参数
1、基础参数
- -h:查看帮助
- –is-dba:查看用户权限
- –dbs:列举所有数据库
- –current-db:列举当前数据库
- –users:列举所有数据库用户
- –current-user:列举当前数据库用户
- –tables: 查看数据库中的表信息
- –columns;查看表中的列信息
- –dump:下载/查看数据
- -D,-T,-C:指定数据库名、表名、列名 ,eg :-D mysql -T users -C user_name;
2、进阶参数
- –level:指定探测等级,eg: --level 5 ,需要系统管理员权限,一般使用等级为3
- –passwords :枚举所有用户密码,需要系统管理员权限
- –privileges :列出数据库管理员权限,需要系统管理员权限
- –dbms :指定数据库类型,eg: --dbms=mysql
- -v: 显示调试信息,一共7个等级,默认为1
- 等级为0:只显示错误python错误信息以及严重的信息
- 等级为1:同时显示基本信息和告警信息
- 等级为2:同时显示debug信息
- 等级为3:同时显示注入的payload,
- …其他为HTTP头相关信息,一般不用。
- –param-del:用于参数分割,当注入的数据不是使用默认参数(&)进行分割,需要用其他字符进行分割测试参数时使用。eg: --param-del=";"
- –cookie:适用于cookie注入,eg: --cookie=“h43nj3bd4nn53huf83i5hgafh”
- –referer:设定HTTP头中的referer信息
- –headers:设定HTTP中的信息,eg: --headers=“client-ip: 1.1.1.1”
- –delay:设置延迟时间,单位为s,用作过狗,eg:–delay=0.3
- –prefix,–suffix:在一些环境下,需要在注入的payload前面后者后面添加特殊参数进行闭合,以保证payload的正常执行。
- –technique:注入的探测方式,一共有5个可选值:B、E、U、S、T,分别表示布尔型注入、报错注入、联合查询注入、语句查询注入、基于时间的盲注,eg: --technique=EU。
- –union-cols :指定union联合查询的列数
- –tamper :指定绕过模块
3、post注入的相关参数
- -r: 读取post请求进行注入,常见于POST、搜索型、HTTP头注入,还有登录后的注入点需要cookie也要用到POST注入。
- -p:指定注入的参数
- –date:将参数信息通过POST提交,eg: --date="?id=1"
4、其他参数
- –flush-session: 清除缓存
- –output-dir:指定文件保存位置
- –smart:对多个目标同时进行测试时,为节省时间,支队能够快速判断为注入的报错点进行注入
- –mobile:通过设置user-agent模拟手机发送的请求,一般适用于app测试。
- –identity-waf:尝试找出waf/IPS/IDS的保护
- –check-waf:检测waf类型。
5、执行命令与读写文件
- –sql-qurey: 执行单条SQL命令,eg: --SQL-qurey “select version()”
- –sql-shell :返回一个sql的shell,执行SQL命令
- –os-shell:指定系统命令
- –file-read:读取文件,eg: --file-read “C:\www\input\123.php”
- –file-write,–file-dest:在写入文件是分别起到指定本地文件和指定上传路径的作用。
6、常用绕过模块
- apostropphemsask.py:将引号替换为utf-8编码,用于绕过单引号过滤
- base64encode.py:将payload进行base64编码
- multiplespaces.py:围绕SQL关键字添加多个空格
- Space2plus.py:使用加号替换空格
- space2dash.py:将空格替换为–,并随机追加一个字符串和换行符
- space2comment.py:使用注释符替换空格
- percentage.py:在每一个字符前面加一个%
- charencode.py:将payload使用url进行编码
- chardoubleencode.py:将payload进行双重URL编码
- randomcase.py:对payload进行随机大小写