主页就一个文件上传的点。右键源代码发现两个hint吧
提示去github上找源码。一搜就有。。下下来。文件也不多。就三个php
upload.php 文件上传。
调用的是helper.php中upload类的upload_base方法
![](https://guokeya.github.io/post-images/1583830687279.png)
show.php 查看/删除上传文件
没找到注入点。但是有一个反序列化的点。可以跟着这个点追一下
发现是由数据库查询得到的。对应的键为attr
看helper.php。着重看一下attr和反序列化的危险函数啥的
找到了危险函数。可以将$ifview覆盖为True
。将$path覆盖为/flag。不知道flag名。就盲猜
追踪attr。发现是由图片的长度序列化而来。貌似不可控。
反正代码也不长。就全部看完吧。。
也就是说。我们上传一个文件。第一步。会返回一个对应键值的数组
进入insert_array函数
发现最后没有进行任何过滤就进入了数据库。那么我们可以通过sql注入。修改掉attr的值。然后反序列化
这里我们只有title可控。而title又是文件名。OK。开始构造
这里类的属性是私有。带%00
。所以得16进制转一下
别忘了。最后的闭合
上传成功后。访问show.php。触发反序列化。得到flag