# [NISACTF 2022]bingdundun~ # [NISACTF 2022]bingdundun~ ![[NISACTF 2022]bingdundun~-1](https://pic.imgdb.cn/item/655c9230c458853aefbfba37.jpg) 得知仅能上传图片或压缩包 通过 URL 传参的部分:`?bingdundun=upload` 可以推测是文件包含,尝试访问 `upload.php` : ![[NISACTF 2022]bingdundun~-2](https://pic.imgdb.cn/item/655c9633c458853aefccdef6.jpg) 正常要包含 `upload.php` ,传参部分应该是:`?bingdundun=upload.php` 由此可以推断 "bingdundun" 参数在接收到数据后会在后面加个:`.php` 就不能通过上传内容为木马代码的图片并利用文件包含来解析木马,只能把目光放在压缩包 > `phar://`伪协议可以将`.phar`打包文件和`.zip`压缩包解压且能解析里面的文件、、 创建一个`Lyrio.php`文件: ```php ``` 压缩成 zip 格式的压缩包,上传,得到上传后文件的地址和名字:`/var/www/html/0bd8920a2f7503f65133966df32d42e3.zip` 用`phar://`伪协议来解析后门文件:`?bingdundun=phar:///var/www/html/0bd8920a2f7503f65133966df32d42e3.zip/Lyrio` ![[NISACTF 2022]bingdundun~-3](https://pic.imgdb.cn/item/655cab0fc458853aef1d39c5.jpg) 页面执行了`phpinfo()`说明后门解析成功,最后就是用 WebShell 管理工具连接并找到 flag ![[NISACTF 2022]bingdundun~-4](https://pic.imgdb.cn/item/655cabfac458853aef216535.jpg) > 也可以生成`.phar`打包文件来做这题,生成`.phar`文件的代码: > > ```php > $payload = ''; // 一句话木马 > $phar = new Phar("shell.phar"); // 后缀名必须为phar > $phar->startBuffering(); > $phar->setStub(""); // 设置stub > $phar->addFromString("Lyrio.php", "$payload"); // 添加要压缩的文件 > $phar->stopBuffering(); > ?> > ``` > > 如果运行报错是由于`php.ini`中的`phar.readonly`参数为"On",阻止 phar 扩展的使用。 > > 解决方法: > > 1. 将`php.ini`中的`phar.readonly`参数为改为"Off" > 2. 在此 php 文件的目录下打开 cmd 输入:`php -d phar.readonly=0 文件名.php` > > 成功后生成`shell.phar`文件,由于本题只能上传图片或者压缩包,所以将后缀改成`.zip`再上传。然后用`phar://`伪协议来解析后门文件 ( phar 伪协议不看后缀名,主要看标识来判定,因此可以改成任意后缀) > > ![[NISACTF 2022]bingdundun~-5](https://pic.imgdb.cn/item/655cca0fc458853aefb88e1e.jpg) > > 接下来的步骤和上面的一样