Taco,一个自动化生成pickle反序列化的工具
本文最后更新于 2026年8月24日 下午
前言
因为上上周打htb的pickle反序列化给我打破防了,所以一气之下写了个自动化pickle反序列化工具,支持自定义文件后缀,由于本人才学python,所以只写了个gen的框架,其他的webui啥的都交给ai了(顺便看看豆包和kimi谁的work牛逼),结果豆包还是牛逼点,免费的kimi真的拉完了
本工具基于python 3.10+开发,支持自定义waf绕过、多编码输出、字节码分析和利用cve实时情报实时更新最新payload
通过nvd api配置来实时更新cve
当前开发环境是python 3.14.6;项目依赖为flask 3.0+和requests 2.31+;代码按python 3.10+作为支持基线,pickle协议界面支持0到5
项目地址:https://github.com/Zomnap/Taco
使用步骤
1 | |

该项目结构
1 | |
接下来是一段README
Payload 模板列表
| ID | 名称 | 说明 |
|---|---|---|
rce_system |
RCE - os.system | 命令执行,无回显 |
rce_popen |
RCE - subprocess.Popen | shell=True 执行 |
rce_popen_capture |
RCE - check_output | 执行并捕获输出 |
rce_popen_read |
RCE - os.popen | 可读取输出 |
rce_eval |
RCE - eval | Python 表达式执行 |
rce_exec |
RCE - exec | 任意 Python 代码 |
file_read |
文件读取 | open() 读文件 |
file_write |
文件写入 | 写文件 |
reverse_shell |
反向 Shell - bash | bash -i 反弹 |
reverse_shell_py |
反向 Shell - Python | 纯 Python 反弹 |
bypass_getattr |
绕过 - getattr | 动态调用绕过检测 |
bypass_builtins |
绕过 - builtins | 沙箱内泄漏 exec |
WAF 绕过方案
输入被过滤的字符后,工具自动生成以下方案并按过滤命中数排序:
- Base64 编码包装 — payload 编码后用 eval 包装
- Hex 编码包装 — 同上,用 hex 编码
- chr() 拼接绕过 — 被过滤字符用 chr(ord) 动态构造
- 无引号 Payload — 完全避免单双引号
- Protocol 0 文本格式 — 纯文本可读格式,绕过二进制特征
- URL 编码 — 适用于 HTTP 参数注入
WAF 规则输入格式
1 | |
API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/templates |
获取所有模板 |
| POST | /api/generate |
生成单个 payload |
| POST | /api/bypass |
WAF 绕过生成 |
| POST | /api/generate_all |
批量生成全部模板 |
| POST | /api/disasm |
字节码反汇编 |
| GET | /api/cves |
获取 CVE 列表 |
| GET | /api/cve_summary |
CVE 统计摘要 |
| GET | /api/formats |
可用文件封装格式 |
| POST | /api/package |
生成并封装文件,返回 Base64 |
| GET | /api/records |
查看本地 Payload 记录,可用 cve_id 筛选 |
生成 Payload 示例
1 | |
文件封装示例
1 | |
/api/package只在本地生成文件字节并返回 Base64,不会上传或投递到外部目标。PDF格式把 pickle 字节放入 EmbeddedFile 流,是否会被目标程序读取取决于目标的文件处理逻辑。
WAF 绕过示例
1 | |
扩展开发
添加新的 Payload 模板
在 generator/payloads.py 中:
- 定义一个实现
__reduce__的类 - 在
PAYLOAD_TEMPLATES列表中注册
1 | |
添加新的绕过方案
在 generator/waf_bypass.py 的 generate_bypass_payloads() 中添加新的 BypassResult。
Taco,一个自动化生成pickle反序列化的工具
https://zomnap.top/2026/08/24/Taco/