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

相关推荐
wordbaby2 分钟前
一次微信小程序 `web-view` 跳转原生页回跳后 H5 白屏的排查与修复(Hash 路由污染)
前端
用户721880438353 分钟前
密码骰子:结合AIUI在眼镜上生成一串16位密码
前端
江华森26 分钟前
全链路可观测落地记:kube-prometheus-stack 在 K3s 上的 8 个坑与一整套修复脚本
前端
deli00739 分钟前
27 寸 4K 开 125% 为什么发虚?PPI 和缩放一次算清
前端
广州华水科技1 小时前
当大坝面临风险时,如何有效实施单北斗GNSS变形监测?
前端
AiMan2 小时前
Poe还是不可以导出左侧所有对话,只能单条内容导出,方法不对吗
前端
AiMan2 小时前
文心生成的内容能否下载吗?
前端
前端双越老师3 小时前
程序员 1v1 访谈系列第十四期:接受焦虑 拥抱不确定
前端·ai编程·全栈
deli0074 小时前
MCP 协议 6 条消息拆开看:AI 为什么能自己读文件调接口
前端