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

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...

2026-03-20
2026-VNCTF-crypto-writeup
Crypto 方向 题目1:math_rsa 需要对等式左边进行化简,有: (x2+1)(y2+1)=(x−y)2+(xy+1)2(x^2 + 1)(y^2 + 1) = (x - y)^2 + (xy + 1)^2 (x2+1)(y2+1)=(x−y)2+(xy+1)2 接着,将 (xy+1)2(xy + 1)^2(xy+1)2 展开并改写为含有 (xy−1)2(xy - 1)^2(xy−1)2 的形式: (xy+1)2=(xy−1)2+4xy(xy + 1)^2 = (xy - 1)^2 + 4xy (xy+1)2=(xy−1)2+4xy 将上述两个结论代入原等式的左边,替换掉 (x2+1)(y2+1)(x^2 + 1)(y^2 + 1)(x2+1)(y2+1): (x−y)2+(xy−1)2+4xy−2(x−y)(xy−1)=4k+4xy(x - y)^2 + (xy - 1)^2 + 4xy - 2(x - y)(xy - 1) = 4k + 4xy (x−y)2+(xy−1)2+4xy−2(x−y)(xy−1)=4k+4xy 等式两边同时消去 4xy4xy4xy: (x...

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-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-05-13
2026-PolarisCTF-crypto-wp
随便写几笔复盘一下 神秘学: 确实很神秘,本来不知道怎么做的。后来有师傅提醒我说试试poly(x1)=0,然后我就觉得这确实比较需要数学直觉,也提醒我们AI时代下也要多自己动脑子,倒不是真的想多难的问题,但是在这种小细节上明明人是肯定可以感觉出来的 我也开始反思为什么太过依赖AI,为什么不去自己看看源代码,不去自己感受一下 今天下午再复现的时候发现,k很小,所以其实可以爆破一下,看看有没有能解出来的c即可。这个思路似乎更常见,唉…确实需要多多夯实一下基础 RSA_LCG: 容器只有4s的限制,常规的算法肯定不行,积攒了经验:要多多上网(如github)等搜搜开源的更快的算法 比如本题的flint,2026ACTF pandra的flatter构造格,SUCTF也有一些,等等… ez_random: 本来脚本每次连接都要恢复一遍A的序列很慢很烦,后来看到了庄三梦师傅的博客:https://www.zhuangsanmeng.xyz/posts/polarisctf2026/#ez_random 才恍然大悟:源代码里早已说明 1set_random_seed(int.from_byt...