0x01 前言
简要说明
写这篇博客的目的只有两个
- 为后续博客之
[代码审计篇]
中关于php反序列化漏洞的审计作铺垫 - 为上一篇博客做点漏洞原理的补充
环境工具
Win10 +Ubuntu
Phpstudy_pro
Sublime_Text 3
注意(tips)
PHAR的使用需要将php.ini设置phar.readonly设置为Off才能用于PHAR对象
PHAR 这个词是PHP和 Archive的组合词,基于Java开发人员熟悉的jar(Java Archive)
预备知识
文件头:
用来辨别一个文件真实内容,可修改(比如CTF中的杂项类就会有涉及修改文件头的试题)
以下是常见文件类型及其参数:
phar可利用的文件操作函数
0x02 简介
PHAR://协议
可以将多个文件归入一个本地文件夹,也可以包含一个文件
PHAR文件
PHAR文件是一种打包格式,通过将多数PHP文件和其他资源(如图像)捆绑到一个归档文件中来实现应用程序和库的分发。且所有PHAR文件都使用.phar作为文件扩展名,PHAR格式的归档需要使用自己写的php代码。
PHAR存档最有特色的一种方便的方法是将多个文件分组为一个文件。这样,PHARr存档提供了一种将完整的php应用程序分发到单个文件中并从该文件运行它的方法,而无需将其提取到磁盘。
PHP可以像在命令行上和从Web服务器上的任何其他文件一样轻松地执行PHAR存档。