江鸟's Blog

UNCTF 出题笔记

字数统计: 454阅读时长: 1 min
2020/11/13 Share

UNCTF 出题笔记

俄罗斯方块

非预期解

直接猛打

预期解

考点是wasm的反编译

先简单介绍一下wasm:WebAssembly 具有巨大的意义——它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在 Web 中运行,比如这个题目的俄罗斯方块就是用go语言写的(网上找的QWQ)

比如原来我们只能在街机上玩的小游戏,都可以搬到浏览器中在线玩

这个题目wp非常简单 同时也因为我的失误导致了本场比赛的最大非预期解,好像大家都去打俄罗斯方块了 都想着直接打出来,其实正常解法也是很easy的

查看源代码可以wasm文件的名称

image-20201113193357977

下载下来后解压,使用wabt工具

编译完成后 这样使用

image-20201113201826093

简单查看编译后的wat,发现还是难以直接读懂 在注释中有这样一句话

1
分数到了999还是9999还是99999来着就有flag,具体我也忘记了,反正自己玩吧!!!

所以我们盲猜分数是99999,因为爱打工的ctfer运气不会差,在wat中搜索,果然发现了一个单独写的99999

image-20201113203544636

把它修改成10然后再重新编译image-20201113203618318

然后原样用我的html重新替换(需要nginx或者apache环境)就可以再打一遍了

ezfind

这个题来源无意中的发现 php中的is_file函数会返回除了true or false之外的值

测试代码

1
2
3
4
<?php
$a =$_GET['name'];
$b=is_file($a);
var_dump($b);

?name[]=a 或者 ?name=%00

image-20201113205334300

具体的原理可能之后会再写一篇分析(咕咕咕咕咕)

这题就这么简单 fuzz就能出来

CATALOG
  1. 1. UNCTF 出题笔记
    1. 1.1. 俄罗斯方块
      1. 1.1.1. 非预期解
      2. 1.1.2. 预期解
    2. 1.2. ezfind