那么这个函数就是通过报错信息(就是上面的 payload) 来辨别数据库的类型,刚好我找的这个网站也是爆出了 MySQL 语句的错误,然后就通过正则 (sqlmap/data/xml/errors.xml) 识别出来啦,篇幅原因源码就不分析了。
sqlmap 的注入分析
- it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads sp
- ecific for other DBMSes? [Y/n] Y
- for the remaining tests, do you want to include all tests for 'MySQL' extending
- provided level (1) and risk (1) values? [Y/n] Y
上面 sqlmap 已经得到了数据库的类型并且参数也是有效的,接下来往下走 sqlmap 就开始判断注入了(这里直接用-v3 参数显示 payload 更加的清晰)。
这一块也是大家最需要搞清楚的一部分,很多小伙伴看着感觉有注入,哎,上 sqlmap,然后基本上一片红,但是实际上,按照 sqlmap 对注入的分类,我们可以更加清晰的了解 sqlmap 到底做了什么,这些东西是从哪里出来。
首先要说一下,sqlmap 有一个 —technique 参数,在运行的整个过程中,也是按照这几类来检测的:
- --technique=TECH.. SQL injection techniques to use (default "BEUSTQ")
- B: Boolean-based blind SQL injection(布尔型注入)
- E: Error-based SQL injection(报错型注入)
- U: UNION query SQL injection(可联合查询注入)
- S: Stacked queries SQL injection(可多语句查询注入)
- T: Time-based blind SQL injection(基于时间延迟注入)
- Q: inline_query SQL injection(内联注入)
对这几种注入还不熟练于心的小伙伴们要好好补一下基础。
那么这些主要的注入语句,我们可以在 sqlmap/data/xml/queries.xml 中查看了解,总结的还是挺全面的,这里截取一部分出来。
- <dbms value="MySQL">
- <cast query="CAST(%s AS CHAR)"/>
- <length query="CHAR_LENGTH(%s)"/>
- <isnull query="IFNULL(%s,' ')"/>
- <delimiter query=","/>
- <limit query="LIMIT %d,%d"/>
- <limitregexp query="s+LIMITs+([d]+)s*,s*([d]+)" query2="s+LIMITs+([d]+)"/>
- <limitgroupstart query="1"/>
- <limitgroupstop query="2"/>
- <limitstring query=" LIMIT "/>
- <order query="ORDER BY %s ASC"/>
- <count query="COUNT(%s)"/>
- <comment query="-- -" query2="/*" query3="#"/>
- <substring query="MID((%s),%d,%d)"/>
- <concatenate query="CONCAT(%s,%s)"/>
- <case query="SELECT (CASE WHEN (%s) THEN 1 ELSE 0 END)"/>
- <hex query="HEX(%s)"/>
- <inference query="ORD(MID((%s),%d,1))>%d"/>
- <banner query="VERSION()"/>
- <current_user query="CURRENT_USER()"/>
- <current_db query="DATABASE()"/>
- <hostname query="@@HOSTNAME"/>
- ......
- ......
- ......
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|