gaslightCTF 2026 Writeup

Crypto · Web · Pwn · Forensics · Rev · Misc
个人复健
Crypto

Where the dream starts 1

Easy

考点:Caesar Cipher

经典凯撒密码:flag 逐字符做 (x + K) mod 26 后输出。密文 fdhvduuhdoobolnhgdvkliwriwkuhh 整体回移 3 位,得到明文 caesarreallylikedashiftofthree,同时为第 2 题提供 keylength=3。

gaslightCTF{caesarreallylikedashiftofthree}

Where the dream starts 2

Medium

考点:Columnar Transposition

列移位转置,密钥由第 1 题推导:keylength=3,keyword = ascii_lowercase[:3] = abc。解密 = 按列长切回 3 列再逐行拼接,网格末行有填充字符,解密后尾部残留 eo 属于转置补齐。

gaslightCTF{tr4nsp0s3-2-th3-k3y-0f-g-fl4t!}

affine-hill

Medium

考点:Known-Plaintext Attack、GF(p) 线性方程组

自制『Affine-Hill』密码声称抗已知明文攻击,实际是线性变换。公式 C = P·K + b (mod 37):字母表 37 字符,分组 m=4,用 [P|1]·[K;b] 构造 15×5 方程组 GF(37) 高斯消元唯一求解两个 keyword。陷阱:字母表 37 个字符模数不是 36;padding 只补齐实际只加密前 n//m 组。

gaslightCTF{kn0wn-pl41nt3xt-4tt4cks-4r3-sup3r-s1mpl3}

NEWJEANS IS FIVE

Hard

考点:AES 结构、GF(2) 线性代数

AES-128 被去掉唯一的非线性组件 SubBytes,整体退化为仿射变换 F(x) = L(x) ⊕ c。用一对已知明文/密文求常数 c,对 128 个单位向量求 L 的列拼出 128×128 矩阵后高斯消元(rank=128),解出的输入按列位序还原即 flag 明文。

gaslightCTF{newj34ns-nv-d!es}

CompleteHTTP

Hard

考点:ECMA-335 元数据解析、RSA 特殊素数结构、TLS 1.0 手工解密

『时尚 RSA』+ TLS 抓包。步骤 1:自写元数据解析器还原 CertificateProvider,发现 p = 2^1023 + x、q = 2^1023 + y,x、y 的 32 位 limb 均为小值;

步骤 2:N 的低 31 个 limb 等于 x·y 且无进位,从低位逐 limb 求解 x0·yk + y0·xk = ck,再爆破最高字节,完整恢复 x、y 分解 N;

步骤 3:用私钥解 ClientKeyExchange 得 premaster,按 TLS 1.0(PRF-SHA256 + CBC + HMAC-SHA1)解密应用数据。

Web

biscuit

Easy

考点:Biscuit 令牌、事实注入

用 Biscuit 做授权 token 的留言板,/flag 需要 role("admin") 事实。/signup 的 username 被原样拼进 user("..."),注册 x"); role("admin"); user("y 闭合字符串并注入 admin 事实,同时保留合法 user 事实使鉴权查询成功。

payload: x"); role("admin"); user("y
Pwn

badcat

Easy

考点:二进制补丁、黑名单绕过

一个『坏猫』版 cat,拒绝读取 /flag、/proc、/dev。.rodata 中黑名单路径为明文 /flag,原地改写成等长的 /etc/passwd(badcat_patched2.bin),上传后直接运行 badcat_patched2 /flag 完整读出 flag。

探索过程:先尝试 fd 复用、kill -STOP + /proc/PID/fd 检查,最终补丁方案最直接。

ram-conservation

Easy

考点:shell 元字符、$IFS 绕过

『省内存』的受限 shell,输入长度与字符被限制。空格不可用时用 $IFS 展开充当分隔符:ls$IFS*/*、cat$IFS* 遍历并读取文件。

Forensics

good-luck

Easy

考点:音频取证、声谱图分析

flag 藏在声谱图里,直接用 Audition 打开查看频谱图可见。

odyssey

shit

考点:图片定位、经纬度查询

『Do I colour grade better than Christopher Nolan?』,flag 格式 gaslightCTF{LAT,LONG}。纯图寻题,0 秒钟猜出雅典卫城。

实际体验:下载图片等了一两小时才开放,经纬度试了 ±0.007 还是不对,网站还一直崩溃,直接放弃了。神人主办方给我气笑了。

Rev

compiled-source-sheets

Hard

考点:非标准载体提取、x86-16 反汇编

『Spectre-proof VM』实际是纯 CSS 实现的 x86-16 模拟器(x86CSS),内存放在 CSS 自定义属性里。用正则提取 @property --mN { initial-value: ... } 得到内存镜像 rom.bin,capstone 以 16 位模式反汇编,定位 flag 校验/输出逻辑。

难点在『把 ROM 拿出来』,拿到后就是普通 16 位代码审计