2026-春秋杯冬季赛-crypto-Writeup
发表于|更新于|CTF
|浏览量:
Crypto 方向
题目1:ez_lcg
文章作者: Estelle
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estelle's Blog!
相关推荐

2026-02-12
2026—SHCTF-crypto-Writeup
Crypto 方向 题目1:阶段1-AES的诞生 Step 1. 源代码审计 结合题目名字和多出来的附件,采用AES被官方发布的时间2001-11-26,然后换成Unix时间戳,得到key Step 2. 读取data.txt,运行exp拿到flag exp: 123456789101112131415161718192021222324252627282930313233343536import refrom binascii import unhexlifyfrom cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modesfrom cryptography.hazmat.primitives import padding# 1) 从 data.txt 读 iv 和密文with open("data.txt", "r", encoding="utf-8") as f: lines = f.read().splitlines()...

2026-02-13
2026-furryCTF-crypto-writeup
Crypto 方向 题目1:GZRSA 审计一下源代码,发现N是仅由flag作为seed生成的,所以是一直不变的,只有e每次打开容器时会根据时间戳变化 N不变,可以用共模攻击,但是需要开两次容器拿到两组数据 最后的结果是:furryCTF{ee74fc3b0b4d_E4SY_RS4_wIth_G2cTf_FRaM3wOrK} 题目2:0x4A 需要找个网站用0x4A做秘钥连续解密3次,最后得到:POFP{2394E9DA555D55D493A28624D901D2CA} 但是写wp的时候找不到那个网站了,当时也没记录 题目3:你是说这是个数学题? 这题在比赛时是PPC板块的,但是应该算是密码题 初始数据:flag的二进制用列表表示,还有一个单位矩阵,对角线全是1 题目做了很多次线性变换,每次做的变换是,在矩阵随机取两个不同的行做异或,然后对二进制列表中相同的元素进行同样的操作 最后得到变化之后的matrix和result 看似很复杂,但是都是线性的,并且每次变换前后的元素都是一一对应的,一定是可逆的 最后逆出来的初始flag二进制直接转码不对,是因为在最开始把flag明文变成二进...

2026-03-09
2026-DesCTF-crypto-writeup
Crypto 方向 题目1:签到 不知道那串疑似base32的密文什么意思,在Google地图输入坐标发现是卡塔尔的一个空军基地,然后结合2-28的日期,搜索新闻能找到真实承诺4 ps:这题出得何意味??? 题目2:check in 在源代码中,d的生成是在RR上的,也就是RealField(53),是53-bit的双精度浮点数,那么之后用Integar转回整数的时候就只保留了高53位bit的数据 这一点在python中也可以直接实现,进而恢复d,然后利用ed和phi的关系可以得出phi,再结合N=p*q解二元方程得到p和q,之后md5得到flag exp: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162import mathfrom hashlib import md5# 题目提供的已知信息e = 20285928988408708385825788658664300305494782819689...

2026-03-12
2026-SparkCTF-crypto-writeup
Crypto 方向 初赛部分 题目1:寻找戒指的旅途 让AI帮我静态分析了一下,发现是PyInstaller 打包的 Python 程序,让他帮我解一下PyInstaller包并反编译出pyc,看到了加密原理: c≡(m∗iv)mod sc \equiv (m * iv) \mod s c≡(m∗iv)mods 接下来很简单,由output.json里的两组m,iv,c做一个gcd先恢复出模数s,然后根据最后一组的iv,c计算m exp: 123456789101112131415161718192021222324252627import jsonimport mathfrom Crypto.Util.number import long_to_byteswith open("output.json", "r", encoding="utf-8") as f: obj = json.load(f)# 通过已知样本恢复模数 st = []for row in obj["data"]: m...