phar反序列化漏洞

本文介绍了PHP中的phar反序列化漏洞,详细阐述了phar文件结构、利用条件和各种利用Demo,包括代码执行和哈希表碰撞攻击。同时,提到了防御措施,如参数过滤和禁止危险函数。
摘要由CSDN通过智能技术生成

之前做CTF遇到phar反序列化漏洞概念,这里小结一下,主要参考自https://paper.seebug.org/680/

基本概念

phar (PHP Archive) 是PHP里类似于Java中jar的一种打包文件,用于归档。当PHP 版本>=5.3时默认开启支持PHAR文件的。

phar文件默认状态是只读,使用phar文件不需要任何的配置。

而phar://伪协议即PHP归档,用来解析phar文件内容。

phar文件结构:

1、stub

一个供phar扩展用于识别的标志,格式为xxx<?php xxx; __HALT_COMPILER();?>,前面内容不限,但必须以__HALT_COMPILER();?>来结尾,否则phar扩展将无法识别这个文件为phar文件。

2、manifest

phar文件本质上是一种压缩文件,其中每个被压缩文件的权限、属性等信息都放在这部分。这部分还会以序列化的形式存储用户自定义的meta-data,这里即为反序列化漏洞点。

https://i-blog.csdnimg.cn/blog_migrate/713a506c9cddeb84daf887cbfc55786d.png

3、contents

被压缩文件的内容。

4、signature

签名,放在文件末尾,格式如下:

https://i-blog.csdnimg.cn/blog_migrate/f423ca945fc8ec28a7527f6fe960d4d0.png

phar使用Demo

注意:生成phar文件需要修改php.ini中的配置:

phar.php

<?php
	class User{
        var $name;
	}

	@unlink("SKI12.phar");
    $phar = new Phar("SKI12.phar");
    $phar->startBuffering();
    $phar->setStub(
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值