Python pickle 反序列化详解

Python pickle 反序列化详解什么是Python反序列化python反序列化和php反序列化类似(还没接触过java。。),相当于把程序运行时产生的变量,字典,对象实例等变换成字符串形式存储起来,以便后续调用,

什么是Python反序列化

python反序列化和php反序列化类似(还没接触过java。。),相当于把程序运行时产生的变量,字典,对象实例等变换成字符串形式存储起来,以便后续调用,恢复保存前的状态...

什么是Python反序列化

python反序列化和php反序列化类似(还没接触过java。。),相当于把程序运行时产生的变量,字典,对象实例等变换成字符串形式存储起来,以便后续调用,恢复保存前的状态

python中反序列化的库主要有两个,和,这俩除了运行效率上有区别外,其他没啥区别

的常用方法有

输出反序列化

读入反序列化

可以看出,和之间反序列化的结果有些许差别,我们先以目前的支持版本为主要对象,在后期给出exp的时候再补上

python3大多版本中反序列化的字符串默认版本为3号版本,我这里的默认版本为4

为了便于分析和兼容,我们统一使用号版本

反序列化流程分析

在挖掘反序列化漏洞之前,我们需要了解python反序列化的流程是怎样的

直接分析反序列化出的字符串是比较困难的,我们可以使用帮助我们进行分析

指令集如下:(更具体的解析可以查看)

依照上面的表格,这一个序列化的例子就很好理解了

我们再来看另一个更复杂的例子

这样另一个更复杂的例子就分析完成了

我们现在能大体了解序列化与反序列化的流程

漏洞分析

RCE:常用的

ctf中大多数常见的pickle反序列化,利用方法大都是

触发的指令码为

大意为:

取当前栈的栈顶记为,然后把它弹掉。

取当前栈的栈顶记为,然后把它弹掉。

以为参数,执行函数,把结果压进当前栈。

只要在序列化中的字符串中存在指令,方法就会被执行,无论正常程序中是否写明了方法

例如:

把生成的payload拿到无的正常程序中,命令仍然会被执行

记得生成payload时使用的python版本尽量与目标上的版本一致

全局变量包含覆盖:指令码

前两个例子开头都有指令码

简单来说,指令码可以用来调用全局的的值

看下面的例子

在我们不知道中值的情况下,如何构造满足条件的payload,拿到flag呢?

利用c指令:

这是一般情况下的flag类

第27行和第37行分别进行了传参,如果我们手动把payload修改一下,将a和b的值改为,

我们成功的调用了中的变量

RCE:BUILD指令

还记得刚才说过的build指令码吗

通过BUILD指令与C指令的结合,我们可以把改写为或其他函数

假设某个类原先没有方法,我们可以利用来BUILE这个对象

BUILD指令执行时,因为没有方法,所以就执行update,这个对象的方法就改为了我们指定的

接下来利用来再次BUILD这个对象,则会执行,而此时已经被我们设置为,因此实现了RCE.

看一看具体如何实现的:

还是以flag类为例

接下来需要我们手撕payload了

根据BUILD的说明,我们需要构造一个字典

接下来往字典里放值,先放一个mark

放键值对

第一次BUILD

放参数

第二次BUILD

完成

我们来试一下

成了,我们在不使用指令的情况下完成了RCE

python2 区别不是很大:

输出:

修改payload:

https://blog.csdn.net/weixin_44377940/article/details/106863514

https://zhuanlan.zhihu.com/p/89132768

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/7008.html

(0)

相关推荐

  • b股是什么意思,上证b股是什么意思

    b股是什么意思,上证b股是什么意思 在证券市场中,上市公司公开发行股票,投资者购买股票来获得股息分红,在投资过程中,我们发现,在股市中,投资标的有A股、B股的划分,对于投资新手或金融小白来说,并不了完全会区分它们。今

    攻略 2021年10月28日
  • 读什么什么有感(读什么什么有感400字左右)

    读什么什么有感(读什么什么有感400字左右)读什么什么有感(读什么什么有感400字左右)质量解决方案读书!关于《十万个人什么》的思考第一次看《十万个为什么》的时候,回味无穷。趁着这个假期,我去书店买了新版…总之,《十万个

    电商 2021年10月19日
  • 补偿的意思(字义,诗词)

    词组补偿的意思(字义,诗词)基本解释详细字义 中英翻译补偿拼音:bǔ cháng注音:ㄅㄨˇ ㄔㄤˊ解释:弥补缺陷,抵消损失:心灵的失落是用金钱补偿不了的|你的损失全由我来补偿。精选例句1、采用二阶温度补偿和电流

    阅读 2021年11月14日
  • 电稿的意思,电稿是什么意思-词组(字义,诗词)

    词组电稿的意思,电稿是什么意思-词组(字义,诗词)基本解释详细字义 电稿拼音:diàn gǎo注音:ㄉ一ㄢˋ ㄍㄠˇ解释:电报底稿。基本字义
    电(電)diàn(ㄉ一ㄢˋ)
    1、物理学现象,可通过化学的或物理的方法

    阅读 2021年12月1日
  • 西梅和榴莲能一起吃吗

    西梅和榴莲能一起吃吗 李子和榴莲可以一起吃。梅花可以帮助人体补充铁、锌、钾,促进儿童骨骼生长发育。榴莲能活血散寒,健胃消食,滋养肌肤,增强免疫力。两种营养并不冲突。梅花不能和茶一起吃。梅花含有大量矿物质,尤其是铁含量最高

    电商 2021年9月26日
  • 每晚坚持“踮脚”运动,半年时间过去了,身体会怎样?

    随着现在生活节奏加快,人们的生活水平质量,有了很大的改善和提高,尤其是中老年人,随之而来的就是各种慢性疾病的出现,所以现在越来越多的人注重养生和保健方面的问题,尤其是人们现在工作生活压力大,为了自身的健康也会效仿多种养生小妙招,但是有些养生方式正确与否,大家却很难以进行判断。

    生活 2021年9月30日