Model E1337 v2 – Hardened Rolling Code Lock
题目描述
难度: Expert
Model E1337 v2 是 Model E1337 的加强版,包含 1 个 Flag。页面展示与 v1 相同的电子锁界面,但 PRNG 算法经过加固。本题考察 PRNG 密码分析(GF(2) 高斯消元恢复 64 位状态)。
服务器使用 Python 2,PRNG 源码可通过 /rng 端点直接访问。
与 v1 的关键差异
| Seed 长度 | 32-bit | 64-bit(但 setup() 只用低 32 位) |
| 每 bit 状态变换轮数 | 1 轮 | 3 轮 |
| 输出码长度 | 26-bit | 64-bit |
| 最少需要收集的码数 | 2+ 个 | 1 个即可 |
| 源码获取方式 | XXE 注入读取 | /rng 直接 GET |
| Flag 数量 | 2 | 1 |
解题思路
操作步骤
1. 读取 PRNG 源码
直接访问 /rng 端点获取源码(无需 XXE):
import random
def setup(seed):
global state
state = 0
for i in xrange(16):
cur = seed & 3
seed >>= 2
state = (state << 4) | ((state & 3) ^ cur)
state |= cur << 2
def next(bits):
global state
ret = 0
for i in xrange(bits):
ret <<= 1
ret |= state & 1
for k in xrange(3): # ← v2: 3 轮变换
state =



