论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
Thinkphp5.x全毛病复现分析
Thinkphp5.x全毛病复现分析
一给
金牌会员
|
2024-5-17 21:54:36
|
显示全部楼层
|
阅读模式
楼主
主题
856
|
帖子
856
|
积分
2568
基础知识
命名空间和子命名空间
我们可以把namespace理解为一个单独的空间,事实上它也就是一个空间而已,子命名空间那就是空间里再划分几个小空间,举个例子:
[code][/code]
成功执行
流程分析
反序列化处打个断点
进入think\process\pipes\Windows的__destruct方法
进入removeFiles方法
$filename是think\model]\Pivot对象,file_exists方法触发它的__toString方法,但是Pivot类是没有__toString方法的,只能找父类Module,Module中使用use调用了Conversion类,Conversion被用trait修饰,所以最终调用的是Conversion类的__toString方法
跟进toJson方法
跟进$this->toArray方法
这里遍历$this->append,我们的append是这个值
先辈入getRelation,传入的key值是F12
每个条件都满意不了,直接return,所以$relation的值为null,满意if,进入getAttr方法
进入getData方法
我们的$this->data中是有F12这个键值的,所以返回$this->data[$name],也就是Request对象,返回之后,$relation就是Request对象了
触发visible方法,但是Request类并没有这个方法,所以触发Request的__call方法
颠末array_unshift方法,$args数组被插入Request对象
然后执行call_user_func_array方法,$this->hook[$method]就是isAjax方法,跟进
调用param方法,$this->config['var_ajax']的值是F12
进入input方法
进入getData方法
接受我们的恶意传参的值,返回给$data,又是进入getFilter方法
也是给$filter赋值了
为system
往下走,进入filterValue方法
call_user_func执行命令
修复方式
官方直接把Request中的__call魔术方法给抹除了,因此链子后半段就断掉了,也就是说以后打比赛修复的化,直接删,不影响业务
Thinkphp5.0.x反序列化链
情况搭建
反序列化入口:
[code]
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
一给
金牌会员
这个人很懒什么都没写!
楼主热帖
C++面试八股文:std::array如何实现编 ...
手把手教你如何使用kali破解wifi密码( ...
3.2操作系统(基本分页存储管理的基本 ...
零基础入门 Java 后端开发,有哪些值得 ...
嵌入式 Linux 内核驱动开发【The first ...
软件开发中,如何为你的代码构建三层防 ...
上古神兵,先天至宝,Win11平台安装和配 ...
Wireshark学习笔记(一)常用功能案例 ...
你真的了解二叉树吗?(上篇) ...
京东云TiDB SQL优化的最佳实践 ...
标签云
存储
挺好的
服务器
浏览过的版块
Java
快速回复
返回顶部
返回列表