CTF Web安全

[安洵杯 2019]不是文件上传(代码审计)

Posted on 2020-03-10,2 min read

主页就一个文件上传的点。右键源代码发现两个hint吧

提示去github上找源码。一搜就有。。下下来。文件也不多。就三个php

upload.php      文件上传。
调用的是helper.php中upload类的upload_base方法
show.php        查看/删除上传文件
没找到注入点。但是有一个反序列化的点。可以跟着这个点追一下
发现是由数据库查询得到的。对应的键为attr


看helper.php。着重看一下attr和反序列化的危险函数啥的
找到了危险函数。可以将$ifview覆盖为True。将$path覆盖为/flag。不知道flag名。就盲猜

追踪attr。发现是由图片的长度序列化而来。貌似不可控。

反正代码也不长。就全部看完吧。。

也就是说。我们上传一个文件。第一步。会返回一个对应键值的数组

进入insert_array函数

发现最后没有进行任何过滤就进入了数据库。那么我们可以通过sql注入。修改掉attr的值。然后反序列化
这里我们只有title可控。而title又是文件名。OK。开始构造
这里类的属性是私有。带%00。所以得16进制转一下

别忘了。最后的闭合

上传成功后。访问show.php。触发反序列化。得到flag

下一篇: [CISCN2019 华东北赛区]Web2(XSS绕过及CSP)→