thinkphp5.0.24反序列化漏洞分析

本文深入分析了ThinkPHP5.0.24框架中的反序列化漏洞,从反序列化起点开始,详细探讨了toArray、getRelationData、__call等关键方法,以及如何构造payload实现文件写入。通过对相关类和方法的分析,揭示了漏洞形成的原因及可能的利用方式,提供了解决此问题的思路。
摘要由CSDN通过智能技术生成

thinkphp5.0.24反序列化漏洞分析

文章目录

thinkphp5框架:

image-20220615000257518

thinkphp5的入口文件在publicindex.php,访问

http://192.168.64.105/thinkphp_5.0.24/public/index.php

image-20220615000539160

具体分析

反序列化起点

写一个反序列化入口点

image-20220615001131637

全局搜索__destruct()函数

image-20220615001115342

hinkphp_5.0.24 hinkphplibrary hinkprocesspipesWindows.php中的__destruct()函数,调用了removeFiles()

image-20220615001339350

跟进removeFiles(),第163行的file_exists可以触发__toString方法

image-20220615001418986

全局搜索__toString方法

thinkphplibrary hinkModel.php的第2265行,发现其调用了toJson方法

image-20220616230519422

跟进toJson,发现其调用了toArray()方法(在Model.php中)

image-20220616230630861

toArray

跟进toArray,发现其有三处可以调用__call方法(就是整一个可以控制的类对象,然后让其调用该类不存在的方法,然后触发__call魔术方法)

__call(),在对象中调用一个不可访问方法时调用。

image-20220616231036322

着重看第三处,也就是第912行,这个需要我们控制$value变量

这个 v a l u e 变量是根据 ‘ value变量是根据 ` value变量是根据value = t h i s − > g e t R e l a t i o n D a t a ( this->getRelationData( this>getRelationData(modelRelation);`而来的

getRelationData分析

跟进getRelationData方法,注意参数$modelRelation需要是Relation类型的,该方法也是thinkphplibrary hinkModel.php中定义的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值