Python pickle 反序列化详解

访客3年前黑客工具939

什么是Python反序列化

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

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

的常用 *** 有

输出反序列化

image-20210225120853886

image-20210225121241835

读入反序列化

image-20210225122449100

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

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

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

反序列化流程分析

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

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

image-20210225135739565

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

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

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

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

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

漏洞分析

RCE:常用的

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

触发的指令码为

大意为:

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

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

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

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

例如:

image-20210225143720246

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

image-20210225143854475

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

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

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

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

看下面的例子

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

利用c指令:

这是一般情况下的flag类

image-20210225153046140

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

image-20210225153629806

image-20210225153442687

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

RCE:BUILD指令

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

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

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

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

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

看一看具体如何实现的:

还是以flag类为例

接下来需要我们手撕payload了

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

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

放键值对

之一次BUILD

放参数

第二次BUILD

完成

我们来试一下

image-20210225155346298

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

python2 区别不是很大:

输出:

修改payload:

image-20210225160448348

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

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

相关文章

老婆能查到我的微信聊天内容吗

<-- --> 现在带孩子可以借助各种方便的电器来解决,比如宝宝冲奶粉的温水可以用调奶器很好的解决,下面友谊长存的小编就来说说:恩诺童调奶器怎么样好用吗 恩诺童调奶器实用吗。 恩诺童...

黑客盗取别人微信(黑客怎么盗取别人微信)

黑客盗取别人微信(黑客怎么盗取别人微信)

本文目录一览: 1、假如微信被别人盗了他们能偷里面的钱吗? 2、有没有黑客能上别人微信号的 3、盗微信软件黑客密码是真的吗 4、微信诈骗到底是通过什么方法,盗取他人微信号的? 5、盗别...

新丰源鸡排的品牌优势在哪里?小本创业者的福音

新丰源鸡排的品牌优势在哪里?小本创业者的福音

选择加盟鸡排的品牌要经过一番深思熟虑,面对当前的市场竞争创业者们应该有自己的主心骨。选择的品牌也要符合自己的实际情况,现在的创业者基本上都是小本投资。除非你是富二代可以自己创品牌。但是我们还是提倡一步...

oa流程是什么意思?OA系统中的共性流程要不要共用?

oa流程是什么意思?OA系统中的共性流程要不要共用?

oa流程是什么意思(OA系统中的共性流程要不要共用?)本文总结了共用共性流程的几点考虑,并给出了可判定为共用共性流程的几点情况。   1. 为什么要考虑共用问题? 前言:作者理解的共性是指有...

苹果手机进入黑客代码模式(苹果手机反黑客)

苹果手机进入黑客代码模式(苹果手机反黑客)

本文导读目录: 1、苹果手机显示被黑客入侵怎么办 2、苹果手机遭到恶意代码攻击怎么解决? 3、苹果手机被黑客远程控制怎么办? 4、苹果手机进入了黑客怎么解锁,屏幕锁了 5、苹果手机会被...

淘宝黑客技术(淘宝有黑客侵入吗)

淘宝黑客技术(淘宝有黑客侵入吗)

本文导读目录: 1、淘宝12亿条客户信息遭爬取,黑客非法获利34万,客户信息是如何泄露的? 2、淘宝被钓鱼什么意思 3、淘宝和京东这种电商网站每天都会遭受到黑客的攻击吗? 4、淘宝有没可能...