首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ThinkPHP8 反序列化调用链

当时也是尝试着挖掘一条反序列化调用链,相比ThinkPHP 6,不少类做了变动,外加上还做了declare (strict_types = 1);的限制,让利用变的有些许的难。...根据官方文档下载好后添加一个反序列化入口就好 反序列化调用链 source点选择 反序列化起点无非是destruct或wakeup方法,wakeup一般用于作对象初始化,多选择destruct方法作为起点...点会选择call方法,一般可能的危险操作都在call方法上,当然也要找变量可控较多且可利用的(method大多不可控了),这里我选的think\Validate#__call,也是ThinkPHP6反序列化调用链中会选的...sink,当然应该也可以选别个 调用链挖掘 选好了sink和source,这样就不会像无头苍蝇,在调用链选择上尽量往我们的sink点靠就好啦,这里先做简单理论,先从source点开始跟 registered...前面分析过了它不能是字符串,本来想通过ReflectionFunction#invokeArgs来实现命令执行,且刚好invokeArgs接收一个数组类型的参数,但ReflectionFunction不允许被序列化和反序列化

14210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从0梳理1场时间序列赛事!

    作者:杰少,南京大学硕士 本文基于 2021 “AI Earth”人工智能创新挑战赛-AI助力精准气象和海洋预测,梳理了时间序列赛事的实践和分析过程,提供了完整baseline方案。...时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。 ?...一、赛题背景 赛题简介 本次赛题是一个时间序列预测问题。...基于历史气候观测和模式模拟数据,利用T时刻过去12个月(包含T时刻)的时空序列(气象因子),构建预测ENSO的深度学习模型,预测未来1-24个月的Nino3.4指数,如下图所示: ?...测试集文件序列的命名规则:test_编号_起始月份_终止月份.npy,如test_00001_01_12_.npy。

    1.6K30

    了解 dubbo 序列化,从 bug 开始

    改起来很简单嘛,让对面把子类的字段删掉就好,但是拿不到值的原因让我想了很久,很明显是序列化和反序列化的过程中这个字段的值丢失了,但是到底是在哪一步呢?还是决定看看源码给自己一个答案。...,那再来找一下dubbo默认的序列化方式。...然后在Serialization接口(实现一些自定义序列化扩展用的)中发现了默认序列化的方式是hessian2: ?...就是默认的序列化器和反序列化器。 首先我们来看序列化。构造方法: ?...主要是第二张图的3个方法,做的事情大概就是循环序列化field的名和值。 下面再来看看反序列化。构造方法: ? ? 这里大概做了3个事: 1、获取fieldMap,方法如下: ?

    72630

    【机器学习】--时间序列算法从初识到应用

    一、前述 指数平滑法对时间序列上连续的值之间的相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, 且必须是服从零均值、 方差不变的正态分布。...即使指数平滑法对时间序列连续数值之间相关性没有要求,在某种情况下, 我们可以通过考虑数据之间的相关性来创建更好的预测模型。 自回归移动平均模型( ARIMA)是最常用的时间序列预测模型。...模型全称为差分自回归移动平均模型 (Autoregressive Integrated Moving Average Model,简记ARIMA) AR是自回归, p为自回归项; MA为移动平均 q为移动平均项数,d为时间序列成为平稳时所做的差分次数...原理:将非平稳时间序列转化为平稳时间序列然后将因变量 仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。...自相关函数ACF(autocorrelation function) 有序的随机变量序列与其自身相比较 自相关函数反映了同一序列在不同时序的取值之间的相关性 公式: ? ?

    72620

    07 Python序列类型深入解析:从range到元组

    序列类型概述 在深入具体的序列类型之前,让我们先了解Python序列类型的整体框架: 序列类型 ├── 可变序列 │ └── 列表(list) └── 不可变序列 ├── range对象...语法格式 range(stop) # 从0开始,步长为1 range(start, stop) # 指定起始值,步长为1 range(start, stop, step) # 指定起始值、结束值和步长...使用负步长(倒序) # 从5倒数到1 for i in range(5, 0, -1): print(i) # 输出:5, 4, 3, 2, 1 1.2 range()的实际应用 # 1....self, item): """将元素压入栈顶""" self.items.append(item) def pop(self): """从栈顶弹出元素...列表优化: 预分配空间:如果知道最终大小,使用list(range(size)) 使用列表推导式替代循环append 批量操作时使用extend而不是多次append 元组优化: 直接创建而不是从列表转换

    7210

    用 AI 识别基因,从向量化 DNA 序列开始

    针对不同的需求和目的,DNA 序列可以被各种分类,支持着多样的学术研究和现实应用。原始的 DNA 序列数据通常长短不一,常存在长序列。...k-mer 一种常见的 DNA 序列预处理方式是 k-mer,从原始序列第一个碱基开始,以一个碱基为单位每次向后一位,每次取一个长度为k的短序列。...向量化 向量化 DNA 序列的过程其实是将其当作普通文本,一条被 kmer 拆分后的序列就像是一个句子,拆成的单个短序列是一个单词,碱基则对应字符。...未知序列研究:研究表明向量化序列能够压缩数据,根据已知基因序列研究未知序列的结构、功能、进化关系。[5] 当拥有足够的序列数据进行研究时,实验结果会更加可靠有效,但数据的存储和处理会成为一个问题。...Milvus 的加入可以从距离算法上解决这一问题,更好地根据数据规模适配硬件,从而显著提高搜索效率。

    1.3K21

    Python序列与列表:从入门到精通

    什么是序列?Python 序列详解 1.1 序列的概念 序列是 Python 中最基本的数据结构之一,它是一组有序的数据的集合。...序列具有以下特点: 有序性:序列中的元素都有其特定的位置和顺序 可索引:可以通过索引访问序列中的元素 可切片:可以获取序列的一部分 可迭代:可以遍历序列中的所有元素 Python 中的序列类型包括: 列表...索引访问 # Python中的索引从0开始,可以使用正索引(从左往右)或负索引(从右往左) my_list = [1, 2, 3, 4, 5] print(my_list[0]) # 输出第一个元素...:step] # start:起始索引(包含) # end:结束索引(不包含) # step:步长(可选,默认为1) print(my_list[1:4]) # 输出:[2, 3, 4] # 从索引...索引访问 # Python中的索引从0开始,可以使用正索引(从左往右)或负索引(从右往左) my_list = [1, 2, 3, 4, 5] print(my_list[0]) # 输出第一个元素

    1700

    从水果连连看到两条序列比对

    一、序列比对 Sequence Alignment 序列比对(sequence alignment),目前是生物信息学的基本研究方法。...,获取序列比对分数或置信度最高的匹配序列片段。...为了获得最佳的比对序列,就需要比较序列间的比对得分大小。...相似性:只代表两条序列的相似度 空位问题 Gap 对于序列在进化过程中,插入或缺失造成的序列空位,可能是一个或多个碱基,氨基酸,甚至功能域。...,也就是序列间极少有插入,缺失大小用于功能域插入或缺失的蛋白质序列比对,序列间少量的长片段空缺小大用于亲缘关系较远的蛋白质同源性分析,序列间有大量的短片段空缺 2.2 氨基酸计分矩阵 蛋白质序列的计分矩阵相较于只有

    1.1K30

    从水果连连看到两条序列比对

    ,获取序列比对分数或置信度最高的匹配序列片段。...但是有个坏消息是,现实中的序列是要长的多,比如癌基因 p53 的序列长度为 25760 个碱基。...为了获得最佳的比对序列,就需要比较序列间的比对得分大小。...相似性:只代表两条序列的相似度 空位问题 Gap 对于序列在进化过程中,插入或缺失造成的序列空位,可能是一个或多个碱基,氨基酸,甚至功能域。...,也就是序列间极少有插入,缺失 大 小 用于功能域插入或缺失的蛋白质序列比对,序列间少量的长片段空缺 小 大 用于亲缘关系较远的蛋白质同源性分析,序列间有大量的短片段空缺 2.2 氨基酸计分矩阵 蛋白质序列的计分矩阵相较于只有

    68731

    Java反序列化漏洞从理解到实践

    我们很容易就能在序列化数据的分析结果中找到这个目标,因为它要么包含“TC_OBJECT – 0x73”特征,要么包含如下数据: 从以上输出中,我们可以看到流数据的最后一部分内容为“nb.deser.HashRequest...也就是说,你完全依赖于接收端的行为模式,更具体地说,你依赖于接收端在反序列化你发送的“已保存的”状态时所执行的具体操作。如果另一端没有调用你所发送的对象中的任何方法,你就无法达到远程代码执行目的。...如果你阅读过其他文章,那么你就会知道,当数据流被反序列化时会自动调用readObject方法。基于这些信息,再从其他文章来源借鉴部分代码,我们就可以着手构建自己的漏洞利用代码,如下所示。...” 简单理解的话,代理对象可以假装成一个Java map对象,然后将所有对原始Map对象的调用导向对另一个类的某个方法的调用。...你可以反编译Groovy库来确认这一点,当你观察ConvertedClosure类时,你可以看到它继承(extends )自ConversionHandler类,反编译这个类,你可以看到如下代码: 从代码中我们可知

    1K100

    从反射链的构造看Java反序列漏洞

    概况 今天我想从构造反射链的从无到有到被利用来谈谈java的反序列化漏洞,从反射的最开始到执行payload,一个从无到有的过程,首先我们介绍一下Transformer类。...Transformer**类介绍** 打开org.apache.commons.collections.Transformer类,可以看到源码中对该类的解释是从一个对象变为另一个对象,如下图所示: ?...下面我们利用以上的三个类一边构造出反序列漏洞的payload一边看他们的运作原理。...下面就要去寻找类了,寻找到调用了ChainedTransformer类中的transform方法的类,这个类叫TransformedMap,从名称来看就非常的相似,找到他的setValue方法,如下图所示...总结 从以上分析我们可以得出,java反序列化漏洞,只要反射链构造合适,我们可以执行任意的java代码。

    1.2K90

    菜菜从零学习WCF十(序列化)

    DtaContractSerializer有许多构造函数重载,但必须使用type参数听歌至少一个根类型   为某个根类型创建的序列化程序不能用于序列化(或反序列化)其他类型,除非该类型是从根类型派生的。...此参数确定序列化程序在单个ReadObject方法调用中序列化或反序列化的对象最大数目。(该方法总是读取一个跟对象,但此对象的数据成员可以具有其他对象。这些对象又可以具有其他对象,依次类推。)...因此,往返行程是从XML到对象实例,然后再返回到XML流。   ... 对对象进行反序列化的最基本的方式是调用ReadObject方法重载之一。   ...如果在选择了XmlSerializer类的服务协定中不慎使用了该类型,则将序列化creitCardNumber成员,这可能并不是想要的结果 关于XmlSerializer序列化实例,有服务,有客户端调用代码示例

    1.1K30

    WSO2 ESB(4)

    WSO2的企业服务总线(ESB)的用户指南 用户指南介绍了如何配置WSO2 ESB使用基于Web的管理控制台。...您可以选择从本地注册表中的元素,以及综合注册表,都登记在浏览器中显示。用户也选择从治理注册表以及配置注册表选项。 命名空间编辑器 - 点击这个图标,打开命名空间编辑器对话框。...6,常见的屏幕和对话框 注册表浏览器 - 这个对话框是从挑注册表选项调用。注册表浏览器包含集成的注册表和本地注册表中的元素。 ?...添加命名空间 - 按一下从Namespaces link的配置节命名空间链接调用此对话框。 XML命名空间提供了一个简单的方法使用可扩展标记语言文件关联URI引用确定的命名空间限定的元素和属性名。...可用于相关的消息处理器,消耗从消息存储的消息,并做处理。 用户可以创建自己的消息存储实现和使用它。 WSO2 ESB船舶与内存中的信息存储和JMS消息存储。 请参阅有关详细信息,管理消息存储的文档。

    4.3K80
    领券