关于sqlmap的问题怎么分析

0x00 概述

近日在利用sqlmap注入测试时遇到一个奇怪的现象,高版本sqlmap无法检测出注入,但是低版本的可以测出注入,并且能跑出数据不是误报,经过对比测试和查看sqlmap源码,发现两个小坑。

0x01 情景重现

【SQL注入扫描利器】sqlmap工具:如何分析问题

注入点形式:json……”whereparams”:[{“name”:”keyWord”,”value”:”test”}]}可注入参数:valuesqlmap命令:python sqlmap.py -r sqlpk.txt –flush-session -vvsqlmap v1.2.11无法注入

sqlmap v1.2成功注入

同理v1.2.10无法注入,v1.1.12可以注入

经过分析,两坑如下:(1)v1.2.11(/v1.2.10/v1.2.9/master)的boundaries.xml没有了针对模糊查询(%)的测试,而v1.2(/v1.1.12/1.1.4/1.2.2)则有。(2)v1.2.11(/v1.2.10/1.2.9/master)必须手动设置json的某个参数为*才能对这个参数进行注入(即使选了y-inject inside),否则payload直接跟在json后导致无法注入,而v1.2(/v1.1.12)则可以默认回车(y)即可对json的某个参数注入。

0x02 详细测试

坑点(1):先了解sqlmap的payload组成:

//图片来源https://www.freebuf.com/colum...

看看v1.2的测试payload:

使用了payload:%‘ and 5731=5731 and ‘%’=’这是挺常见的搜索框注入看看V1.2的boundaries.xml:

而v1.2.11的boundaries.xml没有对模糊查询的注入测试!https://github.com/sqlmapproj...于是添加模糊查询的注入测试到v1.2.11的该文件中,并手动添加*到注入参数(如value),即可成功注入!附上添加后的版本:https://github.com/theLSA/sql...

pr得到答复是因为误报太多所以移除了相关payload,但是将会有限的恢复。https://github.com/sqlmapproj...

坑点(2):对比v1.2和v1.2.11的payload:

可以看出v1.2.11直接将payload接在json末尾了。在注入参数value手动添加*%22whereparams%22%3A%5B%7B%22name%22%3A%22keyWord%22%2C%22value%22%3A%22*%22%7D%5D%7D即可成功注入!

0x03 结语

  • 个人建议添加模糊查询的测试payload,误报还是好过漏报,况且是很常见的模糊查询注入。

  • 遇到json参数尽量加手动*(针对某些版本的sqlmap)。

  • 利用sqlmap测试的时候建议加上-vv。

  • 不能过于依赖工具,尽量工具+手工测试比较保险。



  • 【什么是sqlmap?】
    sqlmap是一款针对 SQL 注入漏洞进行自动化检测和利用的工具。他可以一次性扫描出所有存在 SQL 注入漏洞的页面,并提供详细的注入细节,从而可以帮助攻击者更快速、更精准地攻击目标网站。
    【sqlmap的攻击原理】
    sqlmap通过制造一系列查询语句来探测目标站点是否存在注入漏洞,利用 SQL 注入的弱点让程序暴露出更多有用信息,比如用户名、密码、敏感数据等。
    【怎样使用sqlmap?】
    使用sqlmap的前提是您必须已经掌握如何构建 SQL 注入语句。sqlmap的自动化处理使得对 SQL 注入漏洞的检测更加方便,只要使用者能够正确配置参数,就能够扫描出存在漏洞的目标站点。
    【sqlmap使用中出现问题怎么办?】
    如果 sqlmap 在执行过程中出现问题,可以通过查看sqlmap的执行日志来确定问题的原因。根据日志的提示来修复错误。通常情况下,sqlmap会明确告诉你错误的产生原因。
    【注意事项】
    在使用sqlmap进行漏洞扫描测试时,一定要在没有授权的情况下才进行。同时,不要将攻击行为用于非法用途。
    【如何预防SQL注入漏洞?】
    对于开发人员来说,正确使用预处理语句和过滤输入数据是预防 SQL 注入最有效的方法。另外,设置足够强的密码和访问控制也是保护系统免受攻击的重要手段。
    【结束语】
    sqlmap是一款十分强大的漏洞扫描工具,但是建议不要随意使用,一定要在没有授权的情况下才可进行,否则将会产生不良后果。同时,在预防和治理 SQL 注入漏洞方面,我们应该从编码规范和安全管理两个方面同时入手,建立安全性高、可靠性强的企业级应用系统。