[NPUCTF2020]这是什么觅

BUUCTF在线评测 (buuoj.cn)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fP3HcNoL-1667129992871)(assets/image-20221030191251-jvplswh.png)]​

附件

用记事本打开是乱码,确实不知道是什么密码,但是有看到关键词flag,同时看到有PK有点像是在winhex上看到的,可以试试用winhex打开试试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5uoBxXx5-1667129992873)(assets/image-20221030191355-mxk4hz6.png)]​

分析

用winhex分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gLG21cRG-1667129992874)(assets/image-20221030191802-nzen9wm.png)]​

是有关键词flag.jpg

但是没有其他的信息,想用图片形式打开,错误

观察十六进制的开头,很熟悉,很像是我们之前做过的zip伪加密的,是zip的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BVDpOLmW-1667129992875)(assets/image-20221030192527-bha49lk.png)]​

更改文件后缀,变成zip文件,解压

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wzUwRzCN-1667129992876)(assets/image-20221030192724-jxcpk92.png)]​

果然得到了flag的图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9aUaM4QB-1667129992877)(assets/flag-20221030192755-c6fme2g.jpg)]​

看到有一个字条和日历,猜测是类似矩阵的原理,其中1被划掉了,那就不考虑1

F1 W1 S22 S21 T12 S11 W1 S13

两个s应该是一对应周六,2对应周日

3 8 12 5 14 4 8 18

得到一串数字,没有超过字母表,可以试试对应字母表

flag{chlendhr}提交,发现错误

试试加上1的

flag{calendar}

提交成功。

### 关于NPUCTF2020 babyLCG题目解析 #### 题目背景与目标 在NPUCTF2020竞赛中的babyLCG挑战属于密码学类别,主要考察参赛者对于线性同余生成器(LCG)的理解及其潜在的安全弱点。该类问题通常围绕如何预测下一个伪随机数值展开。 #### LCG工作原理概述 线性同余生成器通过下面的公式迭代生成一系列伪随机数序列[^1]: \[X_{n+1}=(a \times X_n + c)\mod m\] 这里\(X_0\)代表种子值;而参数\(a,c,m\)分别是乘子、增量以及模数,在不同应用场景下会有所不同。 #### 安全隐患分析 当LCG被用于安全敏感场景时存在明显缺陷:如果攻击者能够获取足够多连续产生的输出,则可以反推出内部状态甚至原始种子。这是因为一旦知道了几个相邻项之间的关系,就有可能求得未知系数并重建整个生成过程。 #### 解决方案探讨 针对此类基于LCG设计的比赛题目,常见的破解手段包括但不限于: - **暴力枚举法**:尝试所有可能的初始条件直到找到符合条件的结果为止; - **数学推导法**:利用已知样本点建立方程组进而精确算出各参数的具体取值; - **组合运用技巧**:结合其他算法如扩展欧几里得定理来加速寻找逆元的过程,从而简化计算量较大的环节[^4]。 具体到这道题目的实现细节方面,假设已经得到了若干个由LCG所产生的明文-密文对,那么就可以设置如下形式的一系列等式: ```python from sympy import symbols, Eq, solve def find_lcg_params(known_values): # 已知多个连续LCG输出值列表 known_values=[v1,v2,...] x,a,b,m=symbols('x a b m') eqs=[] for i in range(len(known_values)-1): vi=known_values[i];vi_plus_one=known_values[i+1] eq=Eq((a*vi+b)%m,vi_plus_one) eqs.append(eq) sol=solve(eqs,(a,b,m)) return sol ``` 上述代码片段展示了怎样根据给定的数据集构建联立方程式,并调用SymPy库自动求解得到满足约束的最佳参数配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值