sqlmap功能梳理


参考-hh帮助信息。

常用:–banner, --dbs, --users ,–tables, --columns, --schema, --smart, --wizard

-v [1-6], 3可以查看payload

1. Target

连接数据库

-d DIRECT 连接数据库

加载文件

-m BULKFILE, 多行url的文本文件

-r, bp抓包后将请求保存为文本

-l 读取bp日志。bp配置:project options - misc - logging。 可以结合–scope过滤日志进行测试。

-c sqlmap.conf, 具体参考模板

-g,谷歌语法

2. Request

–method=METHOD 指定请求方法。如果是post,可用-p指定测试参数。

–data post body。可搭配–param-del

cookie

cookie注入:–level >=3

--cookie=COOKIE  
--cookie-del=COO.
--live-cookies=L.
--load-cookies=L.
--drop-set-cookie

host、UA等其它http头部

测试注入需要设置级别–level 5

UA:

-A
--mobile      
--random-agent  from /data/txt/user-agent

host等其它头部:

 --host=HOST      
 --referer=REFERER
 --headers=HEADERS

其余可以用–headers指定,\n可以换行。

认证

应对有弹出认证窗要求输入用户密码的场景。

--auth-type
--auth-cred
--auth-file PEM private key file

代理

--ignore-proxy    
--proxy=PROXY     
--proxy-cred=PRO..
--proxy-file=PRO..
--proxy-freq=PRO..

tor:

--tor             
--tor-port=TORPORT
--tor-type=TORTYPE
--check-tor       

延迟、超时与重置

--delay=seconds
--timeout=TIMEOUT 
--retries=RETRIES 
--retry-on=RETRYON

随机参数

可以发正常包,一定程度上防止被发现。

–randomize=RPARAM

安全模式

不对安全url进行注入,防止多次请求失败后会话被销毁。

常用于盲注场景。

--safe-url=SAFEURL
--safe-post=SAFE..
--safe-req=SAFER..
--safe-freq=SAFE..

忽略

--ignore-code=IG..  比如4xx状态码, --ignore-401
--ignore-redirects
--ignore-timeouts 

其它

--skip-urlencode   有些网站会接受非编码的值
--csrf-token=CSR..
--csrf-url=CSRFURL
--csrf-method=CS..
--csrf-retries=C..
--force-ssl   使用https    
--chunked    分块传输,搭配--keep-alive,设置请求字段Transfer-Encoding: chunked\r\n
--hpp       参数污染 
--eval=EVALCODE   

3. Optimization

-o开启所有优化

–keep-alive, 请求中会有connection: keep-alive\r\n字段。使用持久连接,加快速度。

–null-connection,使用HEAD方法,不接受body,常用于盲注。

–threads 最大线程数。谨慎使用。

–predict-output,不能搭配多线程。用于检索并统计字符出现的次数。

4. Injection

sql注入可以发生在请求的任意位置。

指定或者排除测试参数:

-p "id,username"
--skip "user-agent,referer" 通常也指定--level
--param-exclude  忽略内容,可以用竖杠|分离
--skip-static

除了-p --skip,也可以用星号或havij样式:

index.php?id=1*&username=aaa
index.php?id=%1%&username=aaa

再次强调,除了-u,–cookie等字段都可以指定。

指定DBMS

--dbms mysql 5.4
--dbms-cred "root:root"

指定系统

–os 一般–DBMS识别之后才使用。

sqlmap机制开关

–no-cast, 不自动转为字符串类型,如"123", null会变为空格。

–no-escape,关闭转义。一般不会关闭。

无效值替换

--invalid-bignum    id=-1
--invalid-logical   id=1 and 1=2
--invalid-string    id=aaa(id应该是整型)

指定payload前后缀

需要先-p指定参数

以id参数为例

-p id --prefix="')" --suffix=" and ('1"='1

但感觉直接注释更普遍-_-

设置tamper绕过waf脚本

不赘述

5. Detection探测

level

–level,共5个等级,1最简单。

sqlmap的payload存在data/xml/payload/*.xml中,等级决定使用哪个xml。

  • 2 – cookie
  • 3 – ua, referer

risk

–risk 风险参数,1-3,默认1。

用于update等写数据库的注入场景,谨慎使用

页面比较

有些目标页面会有动态广告之类的,影响sqlmap对注入的判断。可以指定要关注的响应内容:

--string=STRING   
--not-string=NOT..
--regexp=REGEXP   
--code=CODE       
--text-only="foobar"
--titles="TITLE"
--smart  启发式快速判断,建议使用。结合-m时效果很明显。

6. sqli technique

--technique
B bool
E error
U union
S stacked
T time-based
Q inline

这些技术对应输出结果的type字段。

其它参数:

--time-sec=TIMESEC  时间盲注时间

--union-cols=UCOLS  union字段数,可以指定范围,如1-10
--union-char=UCHAR  占位字符(串)
--union-from=UFROM  指定table

DNS攻击!!!

--dns-domain=DNS..  指定自己搭建的DNS服务器

二次注入

复习:注入内容写入数据库,其它页面读出来

--second-url=SEC..
--second-req=SEC..

7. 指纹

-f, --fingerprint, 获取os, server, 语言, dmbs等信息。

8. Enumeration检索信息

-a -all 检索所有信息

-b, --banner DBMS信息,常用

经典套路

--dbs --exclude-sysdbs 列举数据库(排除系统自带的)
--current-db
-D DB --tables
-D DB -T tbl --columns
-D DB -T tbl -C "username, password" --dump

条件where:
--where
条件limit:
--start=LIMITSTART
--stop=LIMITSTOP  

其它(部分):

--is-dba  当前用户是否是管理员
--users 枚举用户
--passwords  爆破密码hash

权限和角色
--privileges
--roles     

9. Brute force

mysql < 5.0版本,没有information_schema数据库,需要爆破存在的库、表和文件。

--common-tables  
--common-columns 
--common-files   

10. 自定义函数注入

--udf-inject     就是那个大名鼎鼎的udf提权漏洞 
--shared-lib=SHLIB

11. 文件系统

--file-read=FILE..  读打开DBMS的文件
--file-write=FIL..  写打开本地的文件
--file-dest=FILE..  将写打开的本地文件保存到这个绝对路径

12. 系统参数!

--os-shell    getshell,会上传木马,显示的信息里有后门路径
--priv-esc   提权!

misc命令里还有一个–shell,用来启动sqlmap shell

结合msf

--os-pwn
--msf-path=MSFPATH
--tmp-path=TMPPATH   目标临时路径

注册表

–reg-*系列参数

13. General

sqlmap扫描后会生成session.sqlite数据库文件, 以及target.txt,可以-s/-t加载。

默认回家再sqlite文件,可以–flush-session清除它,不用手动删除。

–batch,使用默认选项。

爬虫

--crawl=CRAWLDEPTH
--crawl-exclude=..   存在指定字符串则不爬取
--charset=CHARSET    盲注字符集

导出

--dump-format
--csv-del=CSVDEL
--output-dir=OUT..
--har   保存http流量为har文件格式(json)
--purge  清除输出

编码

–encoding

payload

–test-filter 选择payload
–test-skip=TEST… 排除payload

其它

--check-internet 检测网络
--forms     探测参数是否来自表单
--eta       显示盲注进度条
--fresh-queries     忽略但不删除session.sqlite
--hex       十六进制编码
--parse-errors      解析相应页面的错误  比如 you have a sql syntax...
--save=SAVECONFIG  将当前命令保存为一个config
--web-root   指定目标的www路径,如/var/www

14. Miscellaneous

发现注入时,执行命令或哔一声
--alert=ALERT
--beep       

--offline  仅使用session.sqlite
--shell  sqlmap shell

--wizard 向导

15. tamper脚本呢

主要是3部分:

  1. priority, 调用优先级;
  2. dependencies(),调用singleTimeWarnMessage提示支持哪些数据库;
  3. tamper(),修改传入的payload参数;kwargs参数是http头部的dict。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值