sqlmap使用教程(6)-注入技术拓展

注入技术

        选项--technique,可以用来指定SQL注入技术,默认为BEUSTQ。其中,B表示基于布尔盲注,E表示基于错误的盲注,U表示基于联合查询注入,S表示堆叠注入,T表示基于时间盲注,Q表示内联查询注入。

 1. 基于布尔盲注的时候,sqlmap通过比较返回页面的不同来判断真假,但有时候一些界面元素会影响sqlmap的判断,那么可以提供一个在原始页面与真条件下的页面中都存在,而在错误页面中不存在的字符串。sqlmap提供了选项--string,用来指定该字符串,即查询值有效时在页面匹配的字符串。例如:

 --technique=B --string="hello"

设置在错误页面中存在,而在原始页面中不存在的字符串:

--technique=B --not-string="fail"

 2.基于错误的注入是通过输入特定语句触发页面报错。如果触发成功,则网页会包含相关错误信息,帮助用户获取想要的信息,进行判断.

  --text-only,用来指定只比较网页的文本内容

--titles,可以设置仅比较网页标题

 3.基于时间的盲注是根据时间延迟语句是否执行(即页面返回时间是否延长)来判断注入漏洞存在的可能性.

--time-sec,可以用来设置响应延时的时间,避免慢速网络带来的干扰

4.联合查询注入根据UNION语句注入的结果进行判断。

--union-cols,可以用来指定列数检测范围。

 5.堆叠注入(Stacked injection)就是允许用户同时执行多条SQL语句,从而说明目标存在堆叠注入漏洞,但并不是在每一个环境中都可以执行堆叠注入,其可能会受到API或者数据引擎不支持的限制。

例如:

-technique=BS -v 3

 6.二阶sql注入,二级SQL注入是指将输入的数据先存储再读取,然后以读取的数据构成SQL查询,形成SQL注入漏洞。为了更好理解,举一个例子:

        某网站提供注册功能,我们注册了一个名字为admin'-- 的用户,注册时特殊符号被转义为普通字符,那我们就注册了一个admin'--的用户,注册后,我们使用admin'--登录后,修改密码,此时如果程序从数据库调用从外部保存下来的数据时,并没有进行过滤没有做处理,就直接执行了以下语句UPDATE users SET PASSWORD='123456' where username='admin'-- -' ,如果这时数据库中原本有一个admin的系统用户,那么我们就成功修改了admin的密码。

        由于二阶SQL注入是在第二次请求的页面中产生的,所以需要指定二级响应的URL地址。选项--second-url,用来设置二级响应的URL地址。

--second-url="http://192.168.1.131/dvwa/ 7.

7.自定义注入

sqlmap在注入时,生成无效参数一般情况下,sqlmap会取已有参数的相反数作为无效参数。例如,默认提交的参数为id=1,sqlmap会取相反数,即id=-1。如果不希望使用默认的方式,可以通过一些选项设置让参数值无效,如使用大数、使用逻辑运算等。

--invalid-bignum,可以强制使用大数让值,使用前id=-1,使用后如id=9999

--invalid-string,可以强制使用随机字符串让值无效,使用前id=-1,使用后如id=dfrgdf

--risk 用来设置测试的风险,范围为1~3。其中,1会测试大部分的测试语句;2会在默认的检测上添加大量时间型盲注语句测试 ;3会增加OR语句的SQL注入测试。

设置请求线程和延迟

--threads,可以用来设置HTTP请求的线程数,默认为1(线程数就是单位时间内发送的HTTP请求数)

--delay,用来设置每次请求的时间间隔,默认没有延迟,单位为秒

清理痕迹

--purge:从本机sqlmap数据目录中,安全地删除所有内容。所谓安全删除,不仅仅是删除,而是在删除前先用随机数据覆盖原有数据,甚至对文件名和目录名也进行重命名以覆盖旧名称,所有覆盖工作完成后才执行删除。

--cleanup:清除sqlmap注入时在目标DBMS中产生的UDF文件与各种表

规避防火墙

所有的Web服务器都会安装防火墙。如果防火墙探测到有异常请求,将会阻止访问服务器的数据。由于SQL注入属于攻击行为,所以在测试过程中,可能会被目标的防护系统拦截,导致测试失败。

使用安全网址:安全网址就是指访问会返回响应状态码200,并且不会有任何报错信息的网址,--safe-url,可以用来设置使用的安全网址。还必须指定--safe-freq选项,用于设置访问请求频率,即每隔几个常规测试,访问一次安全URL。

–safe-url="http://192.168.1.31/sqli-labs/" --safe-freq=2

--safe-req,用于从文件中加载安全网址的HTTP请求。该选项也必须与--safe-freq选项一起使用。

-safe-post,可以用来指定访问安全网址时通过POST方式提交的数据。该选项必须与选项--safe-url和--safe-freq配合使用。

--safe-url="http://192.168.1.31/dvwa/login.php" --safe-post="username=admin&password=password" --safe-freq=2

使用脚本绕过防火墙:脚本保存在sqlmap安装目录的tamper文件夹中。--list-tampers,用于列出所有可用的脚本。选项--tamper,可以用来指定使用的Tamper脚本。用户也可以同时使用多个Tamper,脚本之间使用逗号分隔,如--tamper="between,randomcase"

绕过CSRF防护

1、由于Token每请求一次,就会变化一次。所以,由于该令牌不固定,可能导致注入测试失败。如果请求的URL地中中包括了token参数,sqlmap提供了选项--csrf-token,用于指定控制Token的参数。–csrf-token="token"

2、如果注入测试的目标URL不包含必需的令牌,就需要从其他位置提取令牌。sqlmap提供了选项--csrf-url,可以用来指定获取令牌的网址。

–csrf-token="token" --csrf-url="http://192.168.1.31/login.php"

3、--csrf-retries,可以用来设置反CSRF令牌重试次数,默认为0

HTTP污染技术

HTTP参数污染是绕过WAF/IPS/IDS的一种技术,选项--hpp,用来使用HTTP污染技术。

chunked传输编码方式

chunked是HTTP报文头中的一种传输编码方式,表示当前的数据需要分块编码传输,--chunked,可以用来启用chunked传输功能。

总结:如果常规扫描没有发现漏洞,可尝试用以上方法再次扫描验证,也许就有意想不到的收获。

写在最后,想要获取sqlmap更多的选项信息,记得用-hh,而不是-h(记忆方法:哈哈,找到了!两个哈(h))!!!!!!

  • 37
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值