[ PROMPT_NODE_27678 ]
SQL 注入测试
[ SKILL_DOCUMENTATION ]
# SQL 注入测试
## 目的
对 Web 应用程序执行全面的 SQL 注入漏洞评估,以识别数据库安全缺陷、演示利用技术并验证输入清理机制。本技能支持跨带内、盲注和带外攻击向量的系统化检测和利用 SQL 注入漏洞,以评估应用程序的安全态势。
## 输入 / 前置条件
### 所需访问权限
- 具有可注入参数的目标 Web 应用程序 URL
- Burp Suite 或等效的代理工具,用于请求操作
- 用于自动化利用的 SQLMap 安装
- 已启用开发者工具的浏览器
### 技术要求
- 理解 SQL 查询语法 (MySQL, MSSQL, PostgreSQL, Oracle)
- 了解 HTTP 请求/响应周期
- 熟悉数据库模式和结构
- 测试报告的写入权限
### 法律前置条件
- 渗透测试的书面授权
- 定义明确的范围,包括目标 URL 和参数
- 建立紧急联系程序
- 落实数据处理协议
## 输出 / 交付物
### 主要输出
- 带有严重性评级的 SQL 注入漏洞报告
- 提取的数据库模式和表结构
- 身份验证绕过的概念验证演示
- 带有代码示例的修复建议
### 证据工件
- 成功注入的截图
- HTTP 请求/响应日志
- 数据库转储 (已脱敏)
- Payload 文档
## 核心工作流
### 第一阶段:检测与侦察
#### 识别可注入参数
定位与数据库查询交互的用户控制输入字段:
# 常见注入点
- URL 参数: ?id=1, ?user=admin, ?category=books
- 表单字段: username, password, search, comments
- Cookie 值: session_id, user_preference
- HTTP 头部: User-Agent, Referer, X-Forwarded-For
#### 测试基础漏洞指标
插入特殊字符以触发错误响应:
sql
-- 单引号测试
'
-- 双引号测试
"
-- 注释序列
--
#
/**/
-- 用于查询堆叠的分号
;
-- 圆括号
)
监控应用程序响应以发现:
- 揭示查询结构的数据库错误消息
- 意外的应用程序行为变化
- HTTP 500 内部服务器错误
- 修改后的响应内容或长度
#### 逻辑测试 Payload
验证基于布尔值的漏洞存在性:
sql
-- 真条件测试
page.asp?id=1 or