2024.6.28 某(农信?)行业赛 Crypto 与 Misc
Crypto
easyLCG
题目代码
| |
思路
比较基础的参数恢复后逆推 seed
flag 是初始 seed 的 bytes 形式, 且 seed 的 bit 长度为 $351$
同时分析代码中 class LCG 的 next() 有
| |
且 $lcg_a, lcg_b, lcg_n$ 都是 prime 式子写的简单点
$$\text{state}_{i+1} = \text{state}_i * a + b \pmod n$$逆向时
$$\text{state}_i * a = \text{state}_{i+1} - b \pmod n$$$$\text{state}_i = (\text{state}_{i+1} - b) * a^{-1} \pmod n$$或者
$$\text{state}_{i-1} = (\text{state}_i - b) * a^{-1} \pmod n$$做了 $\text{ROUND}-6$ 次 next() 操作, 且最后 6 次的结果为 lcg_next_6
而 $\text{ROUND}$ 是在 $200-300$ 之间随机选取的, 恢复完参数后轻度暴力即可
Exploit
| |
Output
| |
ez_dp
题目代码
| |
思路
Exploit
正在烹饪ing
p-1高位攻击
题目质量还不错,考构造与对 Coppersmith 参数的理解
题目代码
SageMath’s Code
| |
分析
一个小 bug
| |
这段代码似乎是想告诉玩家 $k$ 大于 $120$ bit,堵上爆破 $k$ 这条路,但出题人似乎搞错了符号优先级。实测这段代码含义是用 $k*\varphi$ 整除 $\varphi$ 的 bit 长。
做题思路:看到高位泄露很自然想到 Coppersmith,但这里 $e$ 又很大,且 $n$ 未知。同时 flag bit 长度大于 $p$ 的比特长,无法部分因子直接解密。利用给出的 $e,d$ 尝试与 $\varphi$ 建立联系,根据 RSA 的基本流程,我们有:
转为等式:
$$ e * d - 1 = k * {\varphi{(n)}} $$由于欧拉函数是积性函数,我们又有 $\varphi{(n)} = \varphi{(p)} * \varphi{(q)}$,而 $p$ 我们已知,且其为素数,则可以计算 $\varphi{(p)}$,即为 $p-1$。接着我们可以计算出 $k * \varphi{(q)}$,利用 Coppersmith 的强大能力,算法可以自己寻找真实的模,这时我们已经构造好了无幂运算的模下多项式,非常适合 Coppersmith 来求解。
参数选择
$\beta$ 参数在预估真实的模在 $k * \varphi{(q)}$ 中所占的比例后($k$ 大于 $120$bit,后面实测大约 $255$ bit),辅以直觉设为 $0.49$ $X$ 参数为解的上限,很轻松的选为未知 bit 长度 $\epsilon$ 参数在其余参数设置正确且确认 Coppersmith 在本题数据有效时不断缩小即可
密码学是这样的,玩家只需要设定好参数就好了,而 Coppersmith 要考虑的事情就很多了~
咕咕咕,一定看 ch19
Exploit
SageMath’s Code
| |
Output
| |
Misc
XQR
看到群里在讨论此题,找 1cePeak 要了附件
有点猜…
放进 010 Editor 打开题目给的 PNG, 没发现什么有效信息 ExifTool 查看, 也没发现什么有效信息
开始大叫()
尝试 Stegsolve 打开, 查看 RGB 通道的 MSB, 发现 MSB 藏有数据(LSB 也有), Preview 时会有个很典的 PK 文件头, 命名 .zip 打开 可以解压得到 flag 文件, 但本身没什么有效信息 注意到压缩包有 60kb 左右, 而解压出的 flag 文件只有约 15kb 打开压缩包发现压缩包结束标志位后还有数据, 以及一个非常明显的 0x64 再往后还有一些数据, 不懂了, 卡了很久
开始大叫()
群里看到有人说是 XOR, 且只有一个字节的 key, 那就逐位 XOR 试试
| |
010 Editor 再次打开, 发现
| |
使用 Deformed-Image-Restorer 修复 CRC 后, 得到可打开的半边图片, 看起来是个 QR Code, 结合群里看到的信息 这里笔者先生成了一个空的二维码将其拼接, 后面发现不如直接拼接刚开始的图片 将题目压缩包的二维码与刚刚得到的少半边图片拼接 尝试使用 QRazyBox 打开图片 右上角 Tools -> Extract QR Infomation, 得到
Output
| |
约一年前看过 QR Code 的原理,忘了…