UNCTF 出题笔记
俄罗斯方块
非预期解
直接猛打
预期解
考点是wasm的反编译
先简单介绍一下wasm:WebAssembly 具有巨大的意义——它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在 Web 中运行,比如这个题目的俄罗斯方块就是用go语言写的(网上找的QWQ)
比如原来我们只能在街机上玩的小游戏,都可以搬到浏览器中在线玩
这个题目wp非常简单 同时也因为我的失误导致了本场比赛的最大非预期解,好像大家都去打俄罗斯方块了 都想着直接打出来,其实正常解法也是很easy的
查看源代码可以wasm文件的名称
下载下来后解压,使用wabt工具
编译完成后 这样使用
简单查看编译后的wat,发现还是难以直接读懂 在注释中有这样一句话
1 | 分数到了999还是9999还是99999来着就有flag,具体我也忘记了,反正自己玩吧!!! |
所以我们盲猜分数是99999,因为爱打工的ctfer运气不会差,在wat中搜索,果然发现了一个单独写的99999
把它修改成10然后再重新编译
然后原样用我的html重新替换(需要nginx或者apache环境)就可以再打一遍了
ezfind
这个题来源无意中的发现 php中的is_file函数会返回除了true or false之外的值
测试代码
1 | <?php |
?name[]=a 或者 ?name=%00
具体的原理可能之后会再写一篇分析(咕咕咕咕咕)
这题就这么简单 fuzz就能出来