【文件包含技巧拓展】————2、zip或phar协议包含文件

这个方法适用于验证包含文件为特定后缀时。 例如以下代码



上面的代码一个验证了后缀是否为jpg,一个是直接添加了jpg后缀,然后才包含。对于现在这种情况,要包含php文件的话的,可以通过截断。但是\x00的截断在php>5.3.4就没用了,而且还要考虑GPC,所以是比较鸡肋的方法。其实我们可以通过zip协议和phar协议来包含文件。

zip://

首先我们新建一个zip文件,里面压缩着一个php脚本。

【文件包含技巧拓展】————2、zip或phar协议包含文件_第1张图片

然后我们构造zip://php.zip#php.jpg

http://127.0.0.1/file.php?file=zip://php.zip%23php.jpg

【文件包含技巧拓展】————2、zip或phar协议包含文件_第2张图片

这样就成功shell了。

phar://

首先我们要用phar类打包一个phar标准包

addFromString('a.jpg', 
$x); 
?>

会生成一个zip的压缩文件。然后我们构造

http://127.0.0.1/file.php?file=phar://php.zip/php.jpg

也可以直接shell

其中phar适用范围为php>5.3.0

以下的这种包含方式在这样的情况下是无效的。

include(一个规定的路径+可控点)

 

 

你可能感兴趣的:(【文件包含技巧拓展】————2、zip或phar协议包含文件)