ctf-misc

ctf-misc

热门

提供无法明确归入各大常规分类的 Misc(杂项)类 CTF 题目解题技巧。适用于编码谜题、pyjail(Python 逃逸)、bash jail(Bash 逃逸)、无线电/SDR(RF/SDR)、DNS 奇技淫巧、Unicode 技巧、脑洞/奇葩语言(esoteric languages)、二维码或音频解密、约束求解、博弈论、各种奇特沙盒逃逸以及混合逻辑谜题。如果题目主要偏向 Web、Pwn、逆向(Reverse)、取证(Forensics)、恶意软件(Malware)、情报收集(OSINT)或密码学(Crypto),请优先使用更具体的专属 Skill。本 Skill 应作为处理真正跨学科或边缘冷门题目的兜底方案,而非首选起点。

2725Star
329Fork
更新于 2026/7/10
SKILL.md
只读
名称
ctf-misc
描述

提供无法明确归入各大常规分类的 Misc(杂项)类 CTF 题目解题技巧。适用于编码谜题、pyjail(Python 逃逸)、bash jail(Bash 逃逸)、无线电/SDR(RF/SDR)、DNS 奇技淫巧、Unicode 技巧、脑洞/奇葩语言(esoteric languages)、二维码或音频解密、约束求解、博弈论、各种奇特沙盒逃逸以及混合逻辑谜题。如果题目主要偏向 Web、Pwn、逆向(Reverse)、取证(Forensics)、恶意软件(Malware)、情报收集(OSINT)或密码学(Crypto),请优先使用更具体的专属 Skill。本 Skill 应作为处理真正跨学科或边缘冷门题目的兜底方案,而非首选起点。

CTF Miscellaneous / 杂项速查

用于处理各类 CTF Misc 题目的快速参考指南。此处仅提供各项技巧的一行代码速查,具体细节请参见关联的文档文件。

环境准备 (Prerequisites)

Python 依赖包(全平台):

pip install z3-solver pwntools Pillow numpy requests dnslib

Linux (apt):

apt install ffmpeg qrencode

macOS (Homebrew):

brew install ffmpeg qrencode

手动安装:

  • SageMath — Linux: apt install sagemath,macOS: brew install --cask sage

补充资源 (Additional Resources)

  • pyjails.md - Python jail/沙盒逃逸技巧、Quine 上下文检测、受限字符全 1 递增数分解(repunit decomposition)、func_globals 模块链遍历、受限字符集数字构造、类属性持久化、基于存储型 eval 的 f-string 配置注入
  • bashjails.md - Bash jail/受限 Shell 逃逸技巧、HISTFILE 文件读取小技巧、bash -v 详细模式逃逸、ctypes.sh 直接调用 C 动态库
  • encodings.md - 各种编码、二维码、奇葩语言(esolangs)、UTF-16 技巧、BCD 编码、多层自动解码、索引目录二维码拼合、多阶段 URL 编码链
  • encodings-advanced.md - Verilog/HDL、格雷码(Gray code)循环编码、RTF 自定义标签提取、SMS PDU 解码、多重编码顺序求解器、UTF-9、像素二进制编码、十六进制数独 + 二维码拼接、TOPKEK 编码、MaxiCode 码
  • rf-sdr.md - 无线电/SDR/IQ 信号处理(QAM-16、载波恢复、定时同步)
  • dns.md - DNS 漏洞利用(ECS 欺骗、NSEC 遍历、IXFR 区域传送、DNS 重绑定、DNS 隐蔽隧道)
  • games-and-vms.md - WASM 补丁修改、Roblox 地图文件逆向、PyInstaller 解包、marshal 字节码分析、Python 环境变量 RCE、Z3(含布尔逻辑门网络 SAT 求解)、K8s RBAC 绕过、浮点数精度漏洞、基于 Python MRO 链的自定义汇编语言沙盒逃逸
  • games-and-vms-2.md - Cookie 关卡游戏爆破、Flask Cookie 游戏状态泄露、WebSocket 游戏数据篡改、仅靠服务端时间校验的绕过、De Bruijn 序列、Brainfuck 插桩、WASM 线性内存篡改
  • games-and-vms-3.md - memfd_create 打包二进制、带 HMAC 承诺揭示(commitment-reveal)与 GF(256) 尼姆博弈(Nim)的多阶段密码学游戏、模拟器 ROM 切换状态保存、Python marshal 代码注入、本福特定律(Benford's Law)绕过、并行连接 Oracle 预言机中继、数织(Nonogram)求解流水线、100 名囚犯问题、基于 Emoji 标识符的 C 语言 Jail 逃逸、BuildKit 守护进程构建密钥利用、Docker 容器逃逸、莱文斯坦距离(Levenshtein distance)预言机攻击、基于类型强制转换的污点分析绕过、碎纸文件像素边缘拼合
  • games-and-vms-4.md - 第 4 部分(2018 时代回顾):将 XSLT 用作图灵完备虚拟机、JavaScript MAX_SAFE_INTEGER 后继相等特性、仅比较 DSL 中的二分搜索预言机、基于脚本引擎超时错误的盲注 SQLi、OEIS 数列检索自动化、基于格式化字符串约束的二维码重构、斐波那契递推的矩阵快速幂、青蛙跳跃计数与泰波那契(Tribonacci)数列、Selenium + Tesseract 动态验证码识别、Brainfuck→Piet 多层 Polyglot 异构代码、Bytebeat 合成器代码识别
  • linux-privesc.md - Sudo 通配符参数注入(fnmatch)、伪造 pcap 文件注入 sudoers.d、monit confcheck 进程注入、Apache -d 路径覆盖、备份 Cronjob SUID 利用、PostgreSQL COPY TO PROGRAM 执行命令、PostgreSQL 备份凭据提取、NFS 共享目录利用、SSH Unix Socket 隧道、PaperCut Print Deploy 提权、Squid 代理横向移动、通过 MySQL 重置 Zabbix 管理员密码、WinSSHTerm 凭据解密
  • ctfd-navigation.md - 无浏览器环境下的 CTFd 平台 API 操作:平台识别、Token 身份认证、题目列表获取、附件下载、Flag 提交、积分榜查询、提示查看、广播通知获取、Python Client 封装类

何时切换工具 (When to Pivot)

  • 如果题目核心在于密码学或数论,请切换至 /ctf-crypto
  • 如果题目是真正的二进制 Pwn,而非 Jail、玩具虚拟机或编码难题,请切换至 /ctf-pwn/ctf-reverse
  • 如果输入主要是需要先进行恢复/提取的文件、图片、音频或抓包文件,请切换至 /ctf-forensics
  • 如果涉及 AI/ML 技术(模型攻击、对抗样本、LLM Jailbreak),请参阅 /ctf-ai-ml

快速入门命令 (Quick Start Commands)

# 文件类型识别
file mystery_file
xxd mystery_file | head -5
python3 -c "import magic; print(magic.from_file('mystery_file'))"

# 编码识别与解码
python3 -c "import base64; print(base64.b64decode('<data>'))"
echo '<data>' | base64 -d
echo '<hex>' | xxd -r -p

# 二维码识别
zbarimg qr.png
python3 -c "from pyzbar.pyzbar import decode; from PIL import Image; print(decode(Image.open('qr.png')))"

# Z3 约束求解
python3 -c "from z3 import *; x=BitVec('x',32); s=Solver(); s.add(x^0xdead==0xbeef); s.check(); print(s.model())"

# Python Jail 测试
python3 -c "__import__('os').system('id')"

通用技巧 (General Tips)

  • 仔细阅读所有给出的题目文件
  • 检查文件元数据、隐藏内容及编码方式
  • Power Automate 脚本中可能会隐藏 API 请求
  • 在猜测多个可能答案时优先使用二分查找

常见编码 (Common Encodings)

# Base64
echo "encoded" | base64 -d

# Base32 (字符集: A-Z2-7=)
echo "OBUWG32D..." | base32 -d

# Hex (十六进制)
echo "68656c6c6f" | xxd -r -p

# ROT13
echo "uryyb" | tr 'a-zA-Z' 'n-za-mN-ZA-M'

根据字符集快速识别:

  • Base64: A-Za-z0-9+/=
  • Base32: A-Z2-7=(不含小写字母)
  • Hex: 0-9a-fA-F

查阅 encodings.md 获取凯撒密码爆破、URL 编码及更多详细信息。

IEEE-754 浮点数编码 (隐藏数据)

常见特征 (Floating): 题目给出的数值其实是隐藏了原始字节的 float32/float64 数组。

核心原理: 一个 32 位浮点数本质上就是 4 个字节解释成的数值。只需将其重新转为原始字节即可得到 ASCII 明文。

import struct
floats = [1.234e5, -3.456e-7, ...]  # 题目给出的数值列表
flag = b''
for f in floats:
    flag += struct.pack('>f', f)
print(flag.decode())

变体场景: 双精度浮点 '>d'、小端序 '<f'、混合端序等。查阅 encodings.md 查看 CyberChef 配方。

USB 鼠标 PCAP 抓包轨迹还原

常见特征 (Hunt and Peck): 流量包中捕获了 USB HID 鼠标对屏幕键盘(OSK)的点击。可使用 USB-Mouse-Pcap-Visualizer 提取点击坐标(下降沿),对相对偏移量进行累加(cumsum)得到绝对坐标,最后叠加绘制在屏幕键盘图像上。

文件类型检测

file unknown_file
xxd unknown_file | head
binwalk unknown_file

压缩包解压

7z x archive.7z           # 通用解压
tar -xzf archive.tar.gz   # Gzip 压缩包
tar -xjf archive.tar.bz2  # Bzip2 压缩包
tar -xJf archive.tar.xz   # XZ 压缩包

多层嵌套压缩包自动解压脚本

while f=$(ls *.tar* *.gz *.bz2 *.xz *.zip *.7z 2>/dev/null|head -1) && [ -n "$f" ]; do
    7z x -y "$f" && rm "$f"
done

二维码 (QR Codes)

zbarimg qrcode.png       # 解码二维码
qrencode -o out.png "data"

MaxiCode 条形码: 中心带有靶心图案(Bullseye)的蜂窝六边形二维条码;由于标准二维码解码器无法识别,需使用 zxing (Java) 进行解码。参阅 encodings-advanced.md

TOPKEK 编码: CTF 特有的二进制编码,其中 KEK=0TOP=1! 后缀代表重复次数。参阅 encodings-advanced.md

查阅 encodings.md 了解二维码结构、修复技巧、分块拼合(结构化拼合与索引目录拼合)及多阶段 URL 编码链。

音频类题目 (Audio Challenges)

sox audio.wav -n spectrogram  # 生成声谱图查看隐藏信息
qsstv                          # SSTV 慢扫描电视解码器

无线电 / SDR / IQ 信号处理

参阅 rf-sdr.md 获取完整细节(IQ 格式、QAM-16 解调、载波/定时同步恢复)。

速查指引:

  • cf32: np.fromfile(path, dtype=np.complex64) | cs16: int16 reshape(-1,2) | cu8: RTL-SDR 原始采样数据
  • 星座图中出现圆环 = 恒定频率偏移;出现螺旋 = 频率漂移 + 增益不稳定
  • DD 载波恢复中的 4 倍相位模糊度 — 尝试旋转 0/90/180/270 度

pwntools 交互示例

from pwn import *

r = remote('host', port)
r.recvuntil(b'prompt: ')
r.sendline(b'answer')
r.interactive()

Python Jail 简易速查

  • 预言机模式(Oracle pattern): L() 表示长度,Q(i,x) 表示比较,S(guess) 表示提交。配合线性或二分查找。
  • 海象运算符绕过(Walrus bypass): (abcdef := "new_chars") 重新赋值受限变量
  • 装饰器绕过(Decorator bypass): 在无函数调用、无字符串字面量限制下使用 @__import__ + @func.__class__.__dict__[__name__.__name__].__get__ 实现逃逸
  • 字符串拼接:+ 被禁止时使用 open(''.join(['fl','ag.txt'])).read()

完整技巧请参阅 pyjails.md

Z3 / 约束求解

from z3 import *
flag = [BitVec(f'f{i}', 8) for i in range(FLAG_LEN)]
s = Solver()
# 添加约束条件、检查可满足性 (sat)、提取模型 (model)

参阅 games-and-vms.md 了解 YARA 规则、类型系统作为约束、布尔逻辑门网络 SAT 求解等更多用法。

哈希特征识别

MD5: 0x67452301 | SHA-256: 0x6a09e667 | MurmurHash64A: 0xC6A4A7935BD1E995

SHA-256 长度扩展攻击 (Length Extension Attack)

当 MAC 计算公式为 SHA-256(SECRET || msg) 且已知原始 msg 与对应哈希时,可通过 hlextend 伪造合法 MAC。受影响算法包括:SHA-256、MD5、SHA-1。不影响:HMAC、SHA-3。

import hlextend
sha = hlextend.new('sha256')
new_data = sha.extend(b'extension', b'original_message', len_secret, known_hash_hex)

技术快速索引 (Technique Quick References)

  • PyInstaller: pyinstxtractor.py packed.exe。参阅 games-and-vms.md 了解字节码指令(Opcode)重映射。
  • Marshal: 使用 marshal.load(f) 读取后通过 dis.dis(code) 反汇编。参阅 games-and-vms.md
  • Python 环境变量 RCE: PYTHONWARNINGS=ignore::antigravity.Foo::0 + BROWSER="cmd"。参阅 games-and-vms.md
  • WASM 补丁修改: wasm2wat -> 翻转极大极小判断逻辑 (minimax) -> wat2wasm。参阅 games-and-vms.md
  • 浮点精度漏洞: 超大乘数将浮点误差放大为可被利用的小数部分。参阅 games-and-vms.md
  • K8s RBAC 绕过: SA Token -> 身份冒用 (impersonate) -> hostPath 挂载 -> 读取 Secret 密钥。参阅 games-and-vms.md
  • Cookie 关卡打卡: 在猜测答案前保存 Session Cookie,失败时恢复 Cookie 即可实现无需重置关卡的爆破。参阅 games-and-vms-2.md
  • Flask Cookie 游戏状态泄露: flask-unsign -d -c '<cookie>' 解码未签名的 Flask Session,直接爆出游戏答案。参阅 games-and-vms-2.md
  • WebSocket 瞬移漏洞: 控制台中修改 player.x/player.y 后直接调用校验函数。参阅 games-and-vms-2.md
  • 纯时间校验绕过: 开启 Session,time.sleep(required_seconds) 延迟对应秒数后直接提交通关。参阅 games-and-vms-2.md
  • Quine 上下文检测: 一种双重用途的 Quine 代码,既能自我打印(通过校验),又能通过全局变量门禁仅在服务端进程中运行 Payload。参阅 pyjails.md
  • 全 1 递增数分解(Repunit decomposition): 在受限 eval 环境中仅用 1+ 两个字符,将目标整数分解为全 1 递增数(1, 11, 111, ...)之和。参阅 pyjails.md
  • De Bruijn 序列: B(k, n) 包含了所有长度为 n、字符集大小为 k 的子串组合;通过追加组合实现线性化展开