当前位置: 首页 > news >正文

SQL注入实战:联合查询与数据库安全加固全解析

(注:本文章所有实操行为均在个人靶场中完成,未经他人允许,严禁进行任何形式的网安测试行为)


一、什么是SQL注入?为什么要学联合查询?

SQL注入是Web安全中最经典、危害也最大的漏洞之一,攻击者通过在输入点插入恶意SQL语句,欺骗数据库执行非授权操作,甚至直接拖库获取所有敏感数据。

而联合查询(Union Query) 是SQL注入中最常用的攻击手段之一,它的核心作用是:

- 当页面存在SQL注入漏洞时,利用 UNION SELECT 语句,在原查询结果的基础上,拼接并查询数据库中的其他数据,从而获取原本无法直接展示的敏感信息(比如用户账号、密码、手机号等)。



二、联合查询注入完整流程

1. 第一步:用 order by 判断字段数

要使用 UNION SELECT ,必须满足一个核心条件:前后两个查询的字段数必须完全一致。所以第一步,我们要先判断目标SQL查询有多少个字段。

核心原理

利用SQL的 ORDER BY N 语法:

- 当 N 是有效列号时,页面正常显示;
- 当 N 超过实际字段数时,数据库会返回报错信息。

操作步骤

从1开始递增尝试 ORDER BY N ,直到页面报错,此时的数字减1就是字段数的临界点。
举个例子:

- 输入 ?id=1 order by 1 → 正常
- 输入 ?id=1 order by 2 → 正常
- ...
- 输入 ?id=1 order by 7 → 报错
结论:该数据表共有6个字段。



2. 第二步:用 union select 寻找回显位

字段数确定后,下一步就是找到页面上哪些字段会被前端直接展示出来,也就是回显位。

前置准备:清空原结果

因为 UNION 会合并两个查询的结果,如果原查询有数据,我们的恶意查询结果可能会被原数据覆盖。所以我们需要先让原查询返回空结果,比如:
?id=-1 (当 id 为不存在的负数时,原查询无结果)

核心操作:拼接数字序列

使用 UNION SELECT 拼接一串连续数字,数量要和字段数一致,比如:
?id=-1 union select 1,2,3,4,5,6

核心目的:定位回显位

页面上显示的数字,就是对应的回显位。比如页面上显示了 2 ,就说明第2个字段是回显位,后续我们可以把查询内容替换到这个位置进行展示。



3. 第三步:信息收集——库、表、字段

找到了回显位,我们就可以利用MySQL的系统数据库 information_schema (存储所有数据库的元数据,是渗透测试的关键突破口)来获取目标数据。

Step 1:查询当前数据库名

sql

?id=-1 union select 1,database(),3,4,5,6


执行后,回显位就会显示当前网站使用的数据库名称。

Step 2:查询所有表名

sql

?id=-1 union select 1,table_name,3,4,5,6 from information_schema.tables where table_schema='数据库名'


这里把 数据库名 替换成上一步查到的库名,就能获取该数据库下的所有表名,比如常见的 user 、 admin 、 member 等。

Step 3:查询目标表的字段名

sql

?id=-1 union select 1,column_name,3,4,5,6 from information_schema.columns where table_schema='数据库名' and table_name='表名'


替换对应的库名和表名,就能查到表中的所有字段,比如 id 、 username 、 password 、 phone 等。



4. 第四步:获取隐藏的敏感数据

拿到了表名和字段名,就可以直接查询敏感数据了。如果只有一个回显位,我们还可以用 CONCAT 函数把多个字段拼接成一个字符串,解决单回显位的限制。

注入语句示例

sql

?id=-1 union select 1,concat(id,':',username,':',password,':',phone),3,4,5,6 from user


执行后,回显位会直接展示拼接后的完整敏感数据,一次性拿到用户的ID、账号、密码和手机号。



三、数据库安全加固策略(最后一道防线)

既然SQL注入这么危险,我们该怎么防御?课程里也给了一套完整的数据库安全加固方案,从权限、日志到备份,层层设防。

1. 防御注入:从源头拦截

- 过滤输入:对用户输入的内容进行严格过滤,拦截 ' 、 " 、 UNION 、 SELECT 等恶意字符和关键字;
- 预编译语句:使用 PreparedStatement 预编译SQL,避免直接拼接用户输入到SQL语句中;
- 最小权限原则:给应用程序分配仅能完成工作所需的最小权限集,避免过度授权。

2. 权限管控:避免权限滥用

- 创建独立用户:为应用创建专属的数据库用户,不要直接使用 root 超级管理员账号;sql

CREATE USER 'appuser'@'localhost' IDENTIFIED BY '密码';

- 仅赋必要权限:只给用户分配 SELECT 、 INSERT 、 UPDATE 等必要权限,禁止 DROP 、 ALTER 等高风险权限;sql

GRANT SELECT, INSERT, UPDATE ON school.* TO 'appuser';

- 红线:绝对禁止使用 root 等超级管理员账号运行应用程序,防止权限滥用与提权攻击。

3. 开启审计日志:攻击后溯源

MySQL的通用日志(General Log)会记录所有SQL操作,是攻击后溯源的关键证据。

- 开启通用日志(默认关闭,日志量较大):sql

set global general_log=on;

- 查看日志文件位置:sql

show variables like 'general_log_file';

- 日志会记录所有SQL操作,即使遭遇攻击,也能通过日志分析黑客操作路径,用于事后溯源和取证。

4. 数据备份:最后一道防线

行业通用的3-2-1备份原则:

- 3份备份:原始数据 + 至少两份副本,确保数据不丢失;
- 2种介质:使用不同的存储介质,如本地硬盘 + 云存储,避免单点故障;
- 1份离线:至少有一份备份是离线存储的,如移动硬盘,防止被远程删除。

备份与恢复方法

- 可视化工具(Navicat):- 备份:右键数据库 → 转储SQL文件 → 结构和数据;
- 恢复:新建数据库 → 运行SQL文件 → 选择备份文件。
- 命令行工具:- 备份(mysqldump):bash

mysqldump -u root -p school > backup.sql

- 恢复(mysql):bash

mysql -u root -p school < backup.sql




四、课程总结

这节课我们从SQL注入的联合查询实战,到数据库安全加固,完整走了一遍“攻击-防御”的流程,核心可以总结为三点:

1. 防御注入是基础:过滤输入、预编译语句,从源头拦截恶意SQL;
2. 权限管控是关键:坚持最小权限原则,避免权限滥用带来的扩大化风险;
3. 数据备份是最后防线:严格遵守3-2-1备份原则,即使数据被破坏,也能快速恢复。

http://www.jsqmd.com/news/727679/

相关文章:

  • 2026年3月分析仪厂商推荐分析,检测仪/热封仪/分析仪/试验机/测试仪/摩擦系数仪/测厚仪,分析仪源头厂家推荐分析 - 品牌推荐师
  • 抖音批量下载终极指南:10分钟掌握无水印视频批量保存技巧
  • 2025届毕业生推荐的AI辅助论文助手实测分析
  • 别再让镜头畸变毁了你的测量精度!Halcon相机标定与畸变矫正保姆级实战
  • 用AI把团队从12人裁到3人,效率提升340%。然后,事情开始失控
  • 2026年德阳公司注册机构口碑推荐榜:德阳公司注册、德阳公司注册代办、德阳公司注册代理、德阳代办执照、德阳代办营业执照、德阳免费注册代办机构选择指南 - 海棠依旧大
  • 用PDA5927四象限光电管DIY一个激光对中/位置检测模块(附Python数据采集代码)
  • NCM格式解密革命:ncmdumpGUI如何让你的音乐重获自由
  • 2026年浙江摩托车检测机构推荐及选购参考,摩托车检测机构推荐榜单/摩托车检测企业推荐榜单/摩托车检测品牌机构 - 品牌策略师
  • 到底是选提示词工程还是RAG还是微调?
  • 从安全策略入手:理解openEuler 20.03的su限制与wheel组最佳实践
  • 基于安卓平台的二手奢侈品鉴定与交流系统
  • 2026年财税咨询机构口碑推荐榜:公司注销、企业变更、公司变更、股权变更代办、资质代办机构选择指南 - 海棠依旧大
  • 保姆级教程:用BTC工具链搞定AUTOSAR模型(BCV模块)的MIL测试与报告生成
  • 2026年长沙二手车商推荐,能让新手放心选择的车商 - 麦克杰
  • 免费本地大模型神器!一行命令开启AI自由,Ollama凭什么狂飙月下载5200万?
  • KMS_VL_ALL_AIO:5分钟实现Windows和Office智能激活的终极方案
  • 教育科技公司利用 Taotoken 为不同课程模块匹配差异化的大模型
  • 使用Taotoken聚合API为小型创业团队优化AI开发成本与效率
  • 从标注到上线:手把手教你用HRNet(OCR分支)训练自己的语义分割模型(附TensorRT加速与Triton部署全流程)
  • Nodejs 服务中集成 Taotoken 实现异步聊天机器人后端接口
  • 创业公司如何借助Taotoken的多模型能力快速进行AI产品原型验证
  • 使用curl命令快速测试Taotoken的API连通性与模型响应
  • 非科班出身的面试“降维打击”:如何将你的原生专业变成不可替代的壁垒?
  • 2026主流新闻媒体有哪些?专业测评推荐:企业发稿必看的权威资源清单 - 发稿平台推荐
  • 告别LOOP!用ABAP 740的REDUCE运算符,3行代码搞定数据统计与累加
  • 在OpenClawAgent工作流中集成Taotoken作为模型供应商的配置指南
  • 别再啃英文原版了!我整理了AlexNet到YOLO的CV经典论文中文版(附对照PDF)
  • Android AudioServer各个关键类
  • AlphaFold3-pytorch深度解析:革命性生物分子结构预测框架的完整技术架构与实践指南