Loading

[BUUCTF题解][HarekazeCTF2019]encode_and_encode

### 知识点

  • JSON基础
  • PHP伪协议

过程

做题先搜集(扫目录+检查HTTP报文+查看初始页面HTML代码),点击初始页面的Source Code链接会跳转query.php并显示源码。

image-20220403162856015

简单来说就是根据我们传入的POST数据作为json解析去读取文件,但是过滤了相关关键字,并对结果也进行过滤。

json解析时的关键字过滤可以采用unicode编码,json是支持用unicode编码直接表示对应字符的,如下两个写法是等价的。

{"poc":"php"}
{"poc":"\u0070\u0068\u0070"}

至于结果的过滤就好办了,采用php伪协议的filter进行下base64编码就好了,最终构造如下payload:

{"page":"\u0070\u0068\u0070://filter/convert.base64-encode/resource=/\u0066\u006c\u0061\u0067"}

image-20220403163614514

解码后获得flag。

image-20220403163632907

posted @ 2022-04-03 16:38  Article_kelp  阅读(206)  评论(0)    收藏  举报