欢迎光临
我们一直在努力

Model E1337 v2 - Hardened Rolling Code Lock

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 的关键差异

特性
v1 (E1337)
v2 (Hardened)
Seed 长度 32-bit 64-bit(但 setup() 只用低 32 位)
每 bit 状态变换轮数 1 轮 3 轮
输出码长度 26-bit 64-bit
最少需要收集的码数 2+ 个 1 个即可
源码获取方式 XXE 注入读取 /rng 直接 GET
Flag 数量 2 1

解题思路

  • 通过 GET /rng 读取 PRNG 源码
  • 分析 v2 PRNG 结构:每 bit 输出做 3 轮仿射变换,变换矩阵为 A³
  • 提交错误码收集 1 个 64-bit 期望值
  • 构建 64 个 LSB 观测方程,用 GF(2) 高斯消元恢复初始状态
  • 预测下一个码,提交获取 Flag

  • 操作步骤

    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 =

    赞(0)
    未经允许不得转载:171主机测评 » Model E1337 v2 - Hardened Rolling Code Lock
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址