说到 SQL 注入工具,相信网络安全工程师们第一时间想到的一定是 sqlmap,这个自动化 SQL 注入工具绝对是大佬级别的存在。
那么今天,我们就来聊一聊,关于 sqlmap 在网络攻防实战中的四大渗透技巧与注意事项。
一、免责声明
本内容仅作为网络安全技术的学术研究,本文中的所有操作均在合法靶机环境中完成,不存在任何实际攻击行为,请大家务必遵守法律法规,切勿将此类技术用于非法用途。
二、使用技巧
这篇文章隶属于学术研究的范畴,相信大家都基本了解 sqlmap 的使用方法,那么我们就不再进行 sqlmap 的相关介绍了,直接进入正题。
(一)注入时的一般语句
1. 一般使用的语句
我们在跑注入时,一般会使用 sqlmap -r 1.txt -d 'id' –dbms=”数据库” –technique=指定注入类型 –level 3 –risk 3 语句。
为什么要使用这些参数呢?
-r , -d 这些都是最基本的,我就不一一概述了。一般我们在使用 sqlmap 的时候,基本都是已经确认注入已经存在的,并不是有一个点就通过 sqlmap 来乱扫一通。
在使用 sqlmap 前就可以判断出注入的类型,并且通过前期的信息收集,就可以判断出网站使用的数据库类型,这里运用 –dbms 和 –technique 就节约了大量的时间。
至于 –level 3 和 –risk 3 ,一般是配合 –dbms 和 –technique 进行使用,可以大幅度的提升注入的速度。
2. level 和 risk 不同等级测试范围
Risk | 攻击强度 | 典型变化 |
---|---|---|
1 |
低风险语句(默认) | SELECT 查询为主 |
2 | 增加基于时间的盲注测试 | |
3 | 使用 OR-based 注入等参数 | 可能导致数据修改 |
Level | 测试范围 | 典型变化 |
---|---|---|
1 | 仅测试 GET / POST 参数 | 基础检测 |
2 | 增加 HTTP Cookie 头检测 | |
3 | 增加 HTTP User-Agent / Referer 头检测 | 常用级别 |
4 | 增加 HTTP Host 头检测 | |
5 | 检测所有 HTTP 头 | 最全面但速度慢 |
(二)刚开始注入就连接不上网站
这种情况一般都是 WAF 监测了 user-agent 头信息,这个时候,我们只需要使用 –random-agent 就可以。
(三)WAF拦截语句
在 sqlmap 中,提供了很多可以绕过 WAF 的脚本,我们通常只需要使用 –tamper 参数就可以了。
不过在大多数网络攻防实战下,仅靠 sqlmap 提供的脚本是很难绕过 WAF 的,所以,大多数情况需要我们自己研究了绕过方式,然后自己写脚本,供 sqlmap 进行调用。
当我们写好脚本之后,我们将写好的脚本放到 tamper 目录下就可以了,我们可以参加 sqlmap 自带的脚本方式来写。
(四)调试方式
在网络攻防实战的很多情况下,sqlmap 并没有按照我们的预想直接跑出结果。
这个时候,我们就可以借助 burp 来找原因。我们使用 –proxy=”http://127.0.0.1:8080″ ,让流量包走到 burp ,再具体分析是哪里出了问题。
有些情况,可能是某些参数多了一部分值,这个时候就可以结合 burp 的 HTTP match and replace rules 功能来替换请求中的值。
Such as:在 cookie 注入的时候,不同的请求可能会在原注入点后添加其它值,有时候会影响其判断结果。