【WEB】multiSQL

输入个万能密码进去测试:

点击"点我验证成绩"。

猜测是要总分>425,所以可以修改听力的成绩。

用fuzz测试有没有过滤:

可以看到union select联合注入,updatexml报错注入,改分要的 update等等都被拦截,那就用堆叠注入。

sql 复制代码
1';show tables;-- -
sql 复制代码
1';desc score;-- -

发现听力的字段名为listen。

WAF 的工作方式是:拿到你输入的原始字符串,用正则去匹配里面有没有连续的 update 这个词。它不会真正理解 SQL 语义。

那我们就让输入里不出现连续的 update ,但让数据库在运行时把它拼出来。靠的是 MySQL 的预处理三件套:

  • SET @q=...:定义一个用户变量,存放 "真正想执行的 SQL 字符串";
  • PREPARE s FROM @q:把这个字符串编译成一条预处理语句;
  • EXECUTE s:执行它。

关键就在 CONCAT('UP','DATE ...')------ 输入文本里写的是被拆开的 'UP''DATE'WAF 扫描时怎么都匹配不到完整的 update ;而 MySQL 执行 CONCAT 后又把它们拼成了完整的 UPDATE score SET listen=300,照常执行。

paylaod如下:

sql 复制代码
1';set @q=concat("up","date score set listen=300");prepare s from @q;execute s;-- -

再查询发现听力成绩被改成300了:

点击"点我验证成绩",flag出来了

相关推荐
lemon_sjdk2 小时前
DOM 节点
java·前端·javascript
nvd112 小时前
深入现代 Web 鉴权架构:网关统一代理 (Forward-Auth) vs 前端持有 JWT 的终极选型与边缘同域实践
前端·架构·状态模式
leoZ2312 小时前
2026-09-09-springboot-cloud-deploy-pitfalls
java·前端·javascript·vue.js·人工智能·spring boot·后端
YWL2 小时前
OpenLayers弹窗Overlay深度实战
前端·vue·openlayers
YWL3 小时前
OpenLayers+ECharts联动:地图点击联动图表,数据可视化大屏方案
前端·信息可视化·vue·echarts·openlayers
芭拉拉小魔仙3 小时前
Vue 2 门诊收费系统中的医保结算流程设计与实践
前端·javascript·vue.js
moonrailgun3 小时前
用 Node.js 复刻 Codex Astra 的终端星光
前端·javascript·算法
海上彼尚3 小时前
Cursor 模型的强度实测排行
前端·人工智能·后端
默_笙4 小时前
💫 给金鱼建图书馆(下):Milvus 向量数据库,让 AI 拥有长期记忆
前端·javascript