码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • thinkphp5.0.24反序列化漏洞分析


    thinkphp5.0.24反序列化漏洞分析

    文章目录

    • thinkphp5.0.24反序列化漏洞分析
      • 具体分析
        • 反序列化起点
        • toArray
        • getRelationData分析
        • $modelRelation生成
        • 进入__call前的两个if
        • __call
        • 虚假的写文件
        • setTagItem
        • 绕过exit
      • exp
      • pop链图
      • 解决windows下的文件名问题
      • 参考链接

    thinkphp5框架:

    image-20220615000257518

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

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

    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中定义的

    image-20220616235535073

    如果我们让if满足,那么$value=$this->parent,看三个条件

    1. 相关阅读:
      如何使用清华源镜像下载python相关的包?
      计算机毕业设计Java健身房管理系统(源码+系统+mysql数据库+lw文档)
      【转】数据库索引详细介绍
      软考-高级-信息系统项目管理第四版(完整24章全笔记)
      嵌入式驱动学习第三周——Linux网络基础调试命
      CAS(compare and swa)中的ABA问题及解决
      【MySQL架构篇】SQL执行流程与缓冲池
      大数据Hadoop入门01——大数据导论
      MyBatis中的一二级缓存
      (10_24)【有奖体验】AIGC小说创作大赛开启!通义千问X函数计算部署AI助手
    2. 原文地址:https://blog.csdn.net/m0_67392182/article/details/126812221
    • 最新文章
    • 沪漂五周年了:我越来越迷茫了
      Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
      MySQL-Seconds_behind_master的精度误差
      [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
      AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
      Agent OS :五种驯服不确定性的范式
      PortSwigger SQL注入LAB11
      数据库即时编译JIT
      [Begin]AI Learn Data Day 0
      深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    小工具 小游戏
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

    京公网安备 11010502049817号