XYCTF 2025 Writeup
XYCTF 2025赛题复现
Crypto
Complex_signin
题目:
1 |
|
分析:
m的高位泄露,但是这里的m和c都是复数,分别从实部和虚部来看
$m_{re} = mh_{re} + x$
$m_{im} = mh_{im} + y$
$C \equiv (m_{re}+m_{im})^3 \mod n$
$C \equiv m_{re}^3 + 3m_{re}m_{im}^2+3m_{re}^2m_{im}+m_{im}^3 \mod n$
$C_{re} \equiv (mh_{re}+x)^3-3(mh_{re}+x)(mh_{im}+y)^2$
$C_{im} \equiv -(mh_{im}+y)^3+3(mh_{im}+y)(mh_{im}+x)^2$
再利用coppersmith定理,求出x,y
代码:
- 方法一:套用二元coppersmith方法脚本
1 |
|
- 方法二:利用结式分别构造两个只含x,y变量的式子,再使用一元coppersmith方法。
关于结式的介绍可以看我博客:结式与RSA - Ramoor
1 |
|
reed
题目:
1 |
|
分析:
给了许多enc序列和模数p,即知道了
$C_i \equiv aI[m_i]+b \mod p$
可得
$C_i-C_j\equiv a(I[m_i]-I[m_j])\mod p$
$a\equiv (C_i-C_j)(I[m_i]-I[m_j])\mod p$
$I[m_i]指m_i在表table中对应的索引。$
由于这里的表table只包含“字母”+“数字”,范围非常的小,同时密文序列长度也只有36左右,因此可以直接爆破。
爆破成功的条件设为
- $1145140 \leq a \leq 19198100$
- $1145140 \leq b \leq 19198100$
- $all(m_i < len(table))$
代码:
1 |
|
结果分析:
1 |
|
可以发现,存在两组合适的结果,其实只有第二个才是正确flag,到此应该可以猜出来,这种方式应该为非预期解,网上的诸多$GCD$方式求a,其实也不能很好地求出结果,都是非预期解。
XYCTF 2025 Writeup
http://ramoor.github.io/2025/04/16/XYCTF 2025 Writeup/