Web安全:sqlmap常用参数整理
在sqlmap梭哈的时候总是记不住参数?
打开帮助文档又因为看到一大堆嘤glish英文感觉头变大了?
于是乎,由于要消灭以上两种问题, 本篇文章就诞生了
第一类:必备参数
这一类参数用于指定目标和修改sqlmap发给目标的http请求头
对于实际测试有很大影响
如果配置不对会直接导致测试的失败:)
等等?为什么那里有个笑脸?
幸灾乐祸呗;)
1.设置目标url
-u --url
2.从文件中读取http请求
非常好用,可以直接从burp导出数据包文件
-r
Tip: 一个提高工作效率的方法
可以在需要测试的地方(比如说参数/Cookie/UA)加上
*
,从而实现精准快速测试
3.从文件中批量导入url
-m
4.设置sqlmap在发包的时候使用的cookie
注意! 该参数并不能测试cookie注入
--cookie=cookie值
5.让sqlmap在发包的时候使用一个手机的UA
--mobile
6.让sqlmap在发包的时候用一个随机的UA,
而不是默认的UA:sqlmap+版本号
实际测试记得加上这个参数,否则就是 “我是坏人"四个字写在脸上 ;>
--random-agent
7.设置sqlmap使用代理
--proxy=设置的代理
第二类:帮助获取数据/权限的参数
1.判断当前数据库用户是不是数据库管理员
--is-dba
2.获取所有数据库名
--dbs
3.获取当前数据库用户
--current-user
4.获取当前数据库
--current-db
5.获取数据库所有数据
在某些场景下很刑! 非常可拷!
--dump-all
6.获取表名
-D 数据库名 --tables
7.获取列名
-D 数据库名 -T 表名 --columns
8.获取数据 (危)
-D 数据库名 -T 表名 -C 列名 --dump
9.弹shell
--os-shell
第三类:可以增加工作效率的参数
1.告诉sqlmap目标的数据库类型(如mysql)
--dbms=数据库类型
2.在注入的payload前面加上特定的前缀
--prefix=前缀
3.在注入的payload后面加上特定的后缀
--suffix=后缀
4.使用特定的注入技术
--technique=技术
Tip: 技术的选项 (默认是全选)
-
B:布尔型注入
-
E:基于报错的注入
-
U:Union注入
-
S:堆叠注入
-
T:时间型注入 (最通用)
-
Q:内联查询
内联查询是什么?能吃吗?
– 不可以吃!
是类似于这样的语句
SELECT statement FROM (SELECT statement);
5.让sqlmap自动选择默认的选项
--batch
6.调整mysql测试范围的广度 (1最窄,5最广,默认1)
--level=数字
7.调整mysql测试风险等级 (1最小,5最大,默认1)
--risk=数字
第四类:在特定情况中会用到的参数
在一些稀奇古怪的场景中,某些参数的出现会让我们能愉快的突突突
1.指定非注入页面的注入结果显示页面
在sql注入中,可能会出现在一个页面注入的结果,在另一个页面显示的情况
--second-url=另一个页面
2.使用分块传输(比如说用来绕waf)
--chunked
3.使用http参数污染(还是可以绕讨厌的waf)
--hpp
4.使用混淆模块
内置的模块放在sqlmap目录下的
tamper
文件夹里但基本上都寄了= =,最好需要自己做一些修改
--tamper=模块名
5.设置每次发包之间的延迟
为了防止破服务器宕机或者waf拦截都可能用到
--delay=秒数
6.设置连接超时的秒数(默认是30)
破服务器可能响应的比较慢
--timeout=秒数
7.设置等待数据库响应的秒数
破服务器嘛…你懂的= =
--time-sec=秒数
8.设置本次测试不用sqlmap的缓存
比如说要检验一下注入漏洞有没有被修复
--flush-session
ref
https://security.stackexchange.com/questions/238646/never-use-stored-session-in-sqlmap