目录
讲真,写道一半后悔了,,,网上说。这个好像不怎么出题。而且现实中这个漏洞也比较少。。。哭了呀,,━┳━…━┳━
(本🐓还没有看POP链…)看了这么多文章,先总体上说说吧。这个**phar://**只是反序列化漏洞中的一个分支。
个人理解:**phar://**之所以拿出来,单独成知识点,有一点原因就是可以不用unserialize()方法,但是仍然会调用php的反序列化。 只要有反序列化,那么就很可能有反序列化漏洞。要有反序列化漏洞,就一定要有反序列化这个步骤。可以是unserialize(),也可以是这个meta…什么的来进行参序列化。
还要有对传入的参数进行 诸如file_get_contents()
等方法的操作
一、这里写一下在构造环境之前要做的一些事情:
-
将php.ini中的phar.readonly设置成off。不然的话,这个是什么意思呢:raeadonly么,on的时候就是只能够读,不能够写phar包。默认是On,改成off,就时能够不readonly了。也就是可以写了嘛。在php.ini中修改,在phpinfo()中查看。。。如下图所示:
-
哦吼,怎么就只剩下一点了呢,,,哎呀一点就一点了,,,pass
二、然后是关于Phar的相关知识的记录吧
老爷们先看看,热热手。上面这个,可以多看几遍,试着理解,不然的话,看再多的博客文章也还是感觉自己没学会。
------------------------假装我是一个分割线-----------------------------------
下面是phar文件结构的知识:
对做题时没影响,但是总是觉得还是知道了解的好,不然就真的成为了一个只会做题的 无 情 机 器 了…。(其实下面这些可以复制粘贴的,但是为了加强印象,我手敲的。也是个小建议吧,)
phar://:
将多个文件归并入一个本地文件夹,也可以包含一个文件
phar文件:
PHAR(PHP文档)文件是一种打包格式(类似于zip???菜鸡猜测。网上没讲),通过将许多的PHP代码文件和其他资源(例如,图像,格式表等)捆绑到一个归档文件中来实现应用程序和库的分发。所有的PHAR文件都是用**.phar**作为文件扩展名的,PHAR格式的归档需要使用自己写的PHP代码来实现,也就是要自己写demo。
phar文件结构:
- a stub
识别phar扩展的标识,格式:xxxx<?php xxxx;__HALT__COMPILER();?> 。对应的函数为Phar::setStub - a manifest describing the contents
被压缩文件的权限,属性等信息都存放在这部分。这部分还会以反序列化的形式存储用户自定义的meta-data,知识漏洞利用的核心部分,对应函数:setMetadata——设置Phar归档元数据 - the file contents
被压缩文件的内容。 - [optional] a signature for verifying Phar integrity(phar file format only)
签名,放在文件末尾,对应函数Phar::stopBuffering ——停止缓冲对Phar文档的写入请求,并将更改保存到磁盘。。(就是停止写入的意思)
自己的理解呢:phar文件,就类似于rar,zip等打包文件之类的。压缩包?。但不一定是压缩包,是一个里面有着其他包的一个文件类型。压缩包应该是属于这一大种包中的一种,就像兵种和军种的关系一样,emmm。。。