BUU [watevrCTF 2019]ECC-RSA

分析题目:

BUU [watevrCTF 2019]ECC-RSA_第1张图片

通过分析代码,我们可以知道
这个题是 ECC 和 RSA 的混合加密,尽管用了两种加密方式,但加密并不复杂。

我们只需要求出 ,p,q的值就能得到 flag 了。点(p,q)是椭圆曲线上的两个点。代入椭圆曲线的方程就能解出 p,q了。
q ^ 2 = p ^ 3 + a * p + b

又因为 n = p * q ,将方程左右两边同时乘以 p ^ 2

所以有:n ^ 2 = p ^ 5 + a * p ^ 3 + b * p ^2

通过Sage解方程:

BUU [watevrCTF 2019]ECC-RSA_第2张图片
发现第二个结果符合条件:

from gmpy2 import*
from libnum import*
n = 0x118aaa1add80bdd0a1788b375e6b04426c50bb3f9cae0b173b382e3723fc858ce7932fb499cd92f5f675d4a2b05d2c575fc685f6cf08a490d6c6a8a6741e8be4572adfcba233da791ccc0aee033677b72788d57004a776909f6d699a0164af514728431b5aed704b289719f09d591f5c1f9d2ed36a58448a9d57567bd232702e9b28f
c = 0x3862c872480bdd067c0c68cfee4527a063166620c97cca4c99baff6eb0cf5d42421b8f8d8300df5f8c7663adb5d21b47c8cb4ca5aab892006d7d44a1c5b5f5242d88c6e325064adf9b969c7dfc52a034495fe67b5424e1678ca4332d59225855b7a9cb42db2b1db95a90ab6834395397e305078c5baff78c4b7252d7966365afed9e

p = 4573744216059593260686660411936793507327994800883645562370166075007970317346237399760397301505506131100113886281839847419425482918932436139080837246914736557
e = 0x10001
q  = n//p

phi = (p-1)*(q-1)
d = invert(e,phi)
m = pow(c,d,n)
print(n2s(m))

得到flag.

  1. ECC加密学习文章
  2. 参考博客1
  3. 参考博客2

你可能感兴趣的:(BUU,Crypto,plus,RSA)