
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 应作为处理真正跨学科或边缘冷门题目的兜底方案,而非首选起点。
提供无法明确归入各大常规分类的 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 利用、PostgreSQLCOPY 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=0,TOP=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 的子串组合;通过追加组合实现线性化展开



