用途
该技能用于在获得明确书面授权的前提下,使用 SQLMap 对 Web 应用进行自动化 SQL 注入检测与利用。它提供系统化的方法,覆盖数据库枚举、表与列发现、数据提取、多种目标指定方式,以及针对 MySQL、PostgreSQL、MSSQL、Oracle 等数据库管理系统的高级利用技术。
主要能力
- 识别 SQL 注入漏洞:通过手工验证(如添加单引号触发错误)与 SQLMap 初始扫描确认注入点。
- 枚举数据库:列出目标服务器上的所有数据库。
- 枚举表结构:列出指定数据库中的表名。
- 枚举列:列出指定表中的列名与数据类型。
- 提取数据:导出指定表、指定列或整个数据库的数据,包括用户名、密码等敏感信息。
- 获取密码哈希:用于离线破解。
- 支持多种注入技术:布尔盲注、时间盲注、报错注入、UNION 查询注入、堆叠查询、带外注入。
- 支持多种目标指定方式:URL、HTTP 请求文件、日志文件、批量目标文件、Google Dork。
- 高级利用:获取操作系统 Shell、执行系统命令、读取与上传文件(需 DBA 权限)。
使用方式
核心工作流按以下阶段推进:
- 识别注入漏洞:手工验证后运行
sqlmap -u "http://target.com/page.php?id=1" --batch。 - 枚举数据库:
sqlmap -u "URL" --dbs --batch。 - 枚举表:
sqlmap -u "URL" -D database_name --tables --batch。 - 枚举列:
sqlmap -u "URL" -D database_name -T table_name --columns --batch。 - 提取数据:
sqlmap -u "URL" -D database_name -T table_name --dump --batch,或指定列-C username,password,或导出全部--dump-all。
高级目标选项包括:从 HTTP 请求文件读取(-r)、从日志文件解析(-l)、批量目标文件(-m)、Google Dork(-g,仅限合法目标)。
常用选项:--batch 非交互模式、--random-agent 随机 User-Agent、--level 测试等级(1-5)、--risk 风险等级(1-3)、--technique 指定注入技术、--tamper 绕过 WAF、--threads 线程数、--delay 请求延迟、--timeout 超时、--retries 重试次数、--start/--stop 限制导出范围、--output-dir 保存会话、--resume 恢复会话。
适用场景
- 已获得书面授权的渗透测试项目。
- 需要验证 SQL 注入漏洞并评估其影响范围。
- 需要枚举数据库结构、导出数据以证明风险。
- 需要针对不同数据库管理系统进行测试。
- 需要绕过 WAF/IPS 或处理慢速目标、大表导出等复杂情况。
限制
- 目标 URL 必须存在可注入参数。
- 需要与目标数据库服务器保持网络连通。
- 大型数据库导出可能耗时较长。
- 部分 WAF/IPS 可能拦截 SQLMap 流量。
- 时间盲注显著慢于报错注入。
- 仅可测试获得明确书面授权的系统;对未知站点使用 Google Dork 攻击属违法行为。
- SQLMap 会产生大量日志记录,存在被检测风险。
- 操作系统 Shell 与文件读写功能需要 DBA 权限。