【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出来了

相关推荐
Setsuna_F_Seiei5 小时前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
zhangzeyuaaa6 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙6 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript
优选资讯7 小时前
标签打印软件怎么对接 Excel 数据
前端·excel
一个风轻云淡8 小时前
GCC 和 GDB命令简单解读
java·linux·前端
u0111026759 小时前
图片处理接口如何统一错误信息 前端提示与后端错误码设计
前端·状态模式
福兮说9 小时前
浏览器里把 iPhone 的 HEIC 转成 JPG:Chrome 解不开、转完大了七成、拍摄时间全丢,六个坑实测
前端·javascript·图像处理·chrome·ios·iphone·heic
libokaifa9 小时前
把语音模型塞进手机:sherpa-onnx 在 Android 上的 ASR / TTS
前端
deli0079 小时前
DLA 枝晶生长实测:5000 个粒子集体停摆之后,分形维数收敛到 1.70
前端
IT_陈寒10 小时前
Redis卡顿的锅,这次真不是大key的错
前端·人工智能·后端