پرش به محتویات

چالش Sergio

Sergio

آشنایی با مساله

در این سوال به ما دو فایل public_key.txt و encrypted_message.txt داده شده است

public_key.txt
1
2
Constant Number = 65537
Public Key = 139551725550533062709001988886045836849
encrypted_message.txt
1
70886407371304490355797613974913658205
که ظاهرا فلگ با رمزنگاری rsa رمز شده است و باید بتوانیم متن رمز را رمزگشایی کنیم تا به فلگ برسیم

راه حل

برای این چالش از آنجا که N کوچک است، بسادگی به کمک سایت factordb میتوانیم عوامل اول N را بدست آوردیم و به فلگ برسیم.

pad = lambda s: '0'+s if len(s)%2  else s
long_to_bytes = lambda c: bytes.fromhex(pad(hex(c)[2:]))
inverse = lambda a, b: pow(a, -1, b)

e = 65537
N = 139551725550533062709001988886045836849
c = 70886407371304490355797613974913658205

p, q = 10073925425153076761, 13852765397894786009
assert p*q == N
phi = (p-1)*(q-1)
d = inverse(e, phi)
long_to_bytes(pow(c, d, N))

همچنین میتوانستیم از این صفحه سایت dcode.fr نیز برای بدست آوردن فلگ استفاده کنیم.

dcode_fr


FLAG 🚩

UCTF{b4b4k_fort}

نویسنده

mheidari98