thinkphp5.0.24反序列化漏洞分析
文章目录
thinkphp5框架:
thinkphp5的入口文件在publicindex.php
,访问
http://192.168.64.105/thinkphp_5.0.24/public/index.php
具体分析
反序列化起点
写一个反序列化入口点
全局搜索__destruct()
函数
hinkphp_5.0.24 hinkphplibrary hinkprocesspipesWindows.php
中的__destruct()
函数,调用了removeFiles()
跟进removeFiles(),第163行的file_exists可以触发__toString
方法
全局搜索__toString方法
在thinkphplibrary hinkModel.php
的第2265行,发现其调用了toJson方法
跟进toJson
,发现其调用了toArray()方法(在Model.php中)
toArray
跟进toArray
,发现其有三处可以调用__call
方法(就是整一个可以控制的类对象,然后让其调用该类不存在的方法,然后触发__call
魔术方法)
__call(),在对象中调用一个不可访问方法时调用。
着重看第三处,也就是第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
中定义的
如果我们让if满足,那么$value=$this->parent
,看三个条件
来源地址:https://blog.csdn.net/m0_67392182/article/details/126812221
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341