phar反序列化个人总结

phar反序列化个人总结

tipsphar在php中一般都是只读状态,需要在php.ini中修改权限
在这里插入图片描述

一、PHAR文件结构

主要分为3-4个部分:
1.a stub
stub的基本结构:xxx<?php xxx;__HALT_COMPILER();?>,前面内容不限,但必须以__HALT_COMPILER();?>来结尾,否则phar扩展将无法识别这个文件为phar文件
2.a manifest describing the contents
Phar文件中被压缩的文件的一些信息,其中Meta-data部分的信息会以序列化的形式储存,这里就是漏洞利用的关键点
3.the files contents
被压缩的文件内容,在没有特殊要求的情况下,这个被压缩的文件内容可以随便写的,因为我们利用这个漏洞主要是为了触发它的反序列化
4.a signature for verifying Phar integrity
签名格式,一般就随便写点什么就好了

二、生成phar的固定代码

$phar = new Phar("exp.phar"); //.phar文件
$phar->startBuffering();
$phar->setStub('<?php __HALT_COMPILER(); ? >'); //固定的
$phar->setMetadata($a); //触发的头是a类,所以传入a对象
$phar->addFromString("exp.txt", "test"); //随便写点什么生成个签名
$phar->stopBuffering();

三、常见题目分析

一般题目多为文件上传,但是题中没有明确的序列化函数,所以需要通过目录穿越(…/…/index.php)或是文件泄露等方法拿到该题的源代码,主要要拿到其中对文件读取的php方法,后续便是代码分析,需要通过给出的方法得出pop链,此处可以注意一些比较常见的方法,如:close()、__destruct()、__construct()、__call(),这些一般都容易产生输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

v_wus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值