找回密码
 立即注册
首页 业界区 安全 HECTF2025

HECTF2025

郦珠雨 2 小时前
CRYPTO

下个棋吧

题目:
先别做题了,flag给你,过来陪我下把棋,对了,别忘了flag要大写,RERBVkFGR0RBWHtWR1ZHWEFYRFZHWEFYRFZWVkZWR1ZYVkdYQX0=
思路:
先 base64 解码
DDAVAFGDAX
然后在棋盘解密
棋盘密码在线加密解密 - 千千秀字
1.png
flag:HECTF{1145145201314}
ez_rsa

题目:
  1. from Crypto.Util.number import *
  2. from gmpy2 import next_prime
  3. from secret import flag
  4. e = 65537
  5. while True:
  6.     p1 = getPrime(512)
  7.     p2 = next_prime(p1)
  8.     q1 = getPrime(250)
  9.     q2 = getPrime(250)
  10.     n1 = p1**2*q1
  11.     n2 = p2**2*q2
  12.     if abs(p1-p2)<p1/(4*q1*q2):
  13.         break
  14. l = len(flag) // 2
  15. m1, m2 = bytes_to_long(flag[:l]), bytes_to_long(flag[l:])
  16. c1 = pow(m1,e,n1)
  17. c2 = pow(m2,e,n2)
  18. print('c1 =', c1)
  19. print('c2 =', c2)
  20. print('n1 =', n1)
  21. print('n2 =', n2)
  22. """
  23. c1 = 53794102520259772962649045858576221465470825190832934218429615676578733090040151233709954118823187509134204197900878909625807999086331747342514637503295791730180510192956834523005990404866445713234424086559831376810175311081520383413318056594422752551500083114685166907745013622324855991979140245907218436391231529893571051805289332021969063468163881523935479367416921655014639791920
  24. c2 = 9052082423365224257952169727471511116343636754632940194264502704697852932532482639724493657103678314302886687710898937205955106008040357863303819909329575056725102501066300771840780970209680697874184954776520388520912958918609760491518738565339512830340891355495761329325539914537183981946727807621066415407718405281155516000986687797150964327740274908804298880671020463280815846412
  25. n1 = 98883753407297608957629424865714335053996022388238735569824164507623692527853962975392303234473035916456899244665285221847772940522588864849967816934720547920870269288918027227609323674530533210183199265184870283022950180411036770713693931074212919932370249829101629879564811122352724775705189146681235092749483273337940646214392591186563201709371435197518622209250725811137856196641
  26. n2 = 52847447490004248309003888295738534958949920800650087542364666545481208701251931880585683578162296213389552561184640931603466477091024928446523302557870614402843171797849560571453293858739610330175253863157533028976216594152329043556996573601155253747817112184987205405092446153491574442703185973485274472403444657880456022918181503181300476227341269990508005711171556056777832920469
  27. """
复制代码
解释:

  • ​get_convergents​:这个函数计算 \(n_1/n_2\) 的渐近分数。每一对 \((p_{next}, q_{next})\) 都是 \(q_1/q_2\) 的潜在候选者。
  • ​gmpy2.isqrt_rem​:快速计算整数平方根并返回余数。如果余数为 0,说明 \(n_1/q_1\) 是完全平方数,我们就找到了 \(p_1\)。
  • \(\phi(n)\) 计算:对于 \(n = p^2 q\),其欧拉函数为 \(\phi(n) = n \cdot (1 - 1/p) \cdot (1 - 1/q) = p(p-1)(q-1)\)。
  • 拼接 Flag:程序将解密出的 \(m1\) 和 \(m2\) 转回字节串并拼接,即可得到 Flag。
flag:HECTF{cRoss_0v3r_v&ry_yOxi}
simple_math

题目:
[code]from Crypto.Util.number import *from secret import flagdef getmodule(bits):    while True:        f = getPrime(bits)        g = getPrime(bits)        p = (f
您需要登录后才可以回帖 登录 | 立即注册