前言:
该文章仅用于信息网络安全防御技术学习,请勿用于其他用途!
该文章为纯技术分享,严禁利用本文章所提到的技术进行非法攻击!
-level 设置注入探测等级共有五个等级,默认为1级, 这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。
-v ["x"] 使用sqlmap注入测试时,可以使用 -v [x] 参数来指定回显信息的复杂程度, x 的取值范围为[0~6]:
打开本地搭建的sqli-labs靶场:Less-1
设置level等级1,回显等级1
sqlmap -u "http://localhost:8030/Less-1/?id=1" --level 1 -v 1
可以看到回显信息比较少,因为level等级设置的是1,所以只使用了基本的SQL注入测试方法,回显等级是1,只显示基本信息和警告信息
下面把等级一步步提高试一下效果(同时把缓存清一下)
sqlmap -u "http://localhost:8030/Less-6/?id=1" --level 2 -v 2
--level 2:会使用一些常见的sql注入测试方法
-v 2: 同时显示debug信息
再次提高等级:
sqlmap -u "http://localhost:8030/Less-6/?id=1" --level 2 -v 2
--level 3:使用更多的sql注入测试方法,比如堆叠注入
-v 3: 同时显示注入的pyload
等级提高到3的时候,可以看到相关日志是相当的多,当然注入时间也会比较长
下面使用sqlmap自带的tamper脚本测试绕过
脚本地址如下:
本次使用tamper脚本为:space2mysqldash.py
代码中主要包括以下函数:
dependencies():该函数是可选的,用于判断这个 tamper 脚本是否适用于当前目标站点数据库管理系统(DBMS)。如果不适用,则输出一条警告信息。在这个脚本里,它判断了目标站点是否使用 MySQL 数据库。
tamper(payload, **kwargs):这个函数是 tamper 脚本实际执行的函数,用于修改 SQL 注入测试时发送的 payload。该函数接收两个参数:待修改的 payload 和其他的参数,但在这个脚本中没有使用。该函数首先定义了一个空字符串 retVal,然后遍历 payload 的每个字符,如果当前字符为空格,则将 --%0A 加到 retVal 中,否则将当前字符加到 retVal 中。最后返回修改后的 retVal。
具体来说,这个 tamper 脚本的目的是将 payload 中的空格替换为 --%0A,即一个破折号和一个换行符,以此来绕过某些防火墙的检测。例如,将 1 AND 9227=9227 修改为 1--%0AAND--%0A9227=9227。
sqlmap -u "http://localhost:8030/Less-6/?id=1" -v 3 --tamper space2mysqldash
等级3可以直观的看到注入时使用的payload,payload中的空格也被替换成了 --%0A,以此来绕过某些防火墙的检测
下面换另一个tamper脚本:space2mssqlhash.py
代码中主要包括以下函数:
tamper(payload, **kwargs):这个函数是 tamper 脚本实际执行的函数,用于修改 SQL 注入测试时发送的 payload。该函数接收两个参数:待修改的 payload 和其他的参数,但在这个脚本中没有使用。该函数首先定义了一个空字符串 retVal,然后遍历 payload 的每个字符,如果当前字符为空格,则将 %23%0A(即一个井号和一个换行符)加到 retVal 中,否则将当前字符加到 retVal 中。最后返回修改后的 retVal。
具体来说,这个 tamper 脚本的目的是将 payload 中的空格替换为 %23%0A,即一个井号和一个换行符,以此来绕过某些防火墙的检测。例如,将 1 AND 9227=9227 修改为 1%23%0AAND%23%0A9227=9227。
sqlmap -u "http://localhost:8030/Less-6/?id=1" --batch -v 3 --tamper space2mssqlhash
payload中的空格也被替换成了%23%0A, 以此来绕过某些防火墙的检测