绕过 RestrictedUnpickler

上周跑模型的间隙,看到一个关于 Python Pickle 反序列化的 CTF 题,和以往见到的不太一样,感觉很有意思,遂打算研究一下。

0x00 Pickle 反序列化

我们知道,当我们控制了如 `pickle.loads`等序列化数据的输入接口时,我们可以通过构造恶意的 Payload 来达到任意代码执行的效果。这是因为, `pickle` 库在反序列化(unpickling)的过程中,默认会导入 Payload 中找到的任意类或者函数对象。所以,Python 的开发者也一直警告大家,不要轻易用 `pickle` 来反序列化没有经过数据清洗的输入数据。同时,还推荐开发者通过实现自己的 `Unpickler`,来限制反序列化过程中能够 import 的类或函数,参考:https://docs.python.org/3.7/library/pickle.html#restricting-globals

DjangoUEditor任意文件上传漏洞分析

Django是Python世界最有影响力的web框架。DjangoUeditor是一款可以在Django应用中集成百度Ueditor HTML编辑器的插件(Ueditor HTML编辑器是百度开源的在线HTML编辑器)。DjangoUeditor插件上存在一个漏洞,可以导致任意文件上传。

python

用GDB排查Python程序故障

标题: MISC系列(43)–用GDB排查Python程序故障

创建: 2015-09-21 16:40

更新:

某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求。实践中他们碰上Python程序非预期退出的现象。最初他们决定用GDB调试Python解释器,查看exit()的源头。我听了之后,觉得这个问题应该用别的调试思路。帮他们排查这次程序故障时,除去原始问题,还衍生了其他问题。