چالش Sergio¶
آشنایی با مساله¶
در این سوال به ما دو فایل public_key.txt
و encrypted_message.txt
داده شده است
public_key.txt | |
---|---|
1 2 |
|
encrypted_message.txt | |
---|---|
1 |
|
راه حل¶
برای این چالش از آنجا که 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 نیز برای بدست آوردن فلگ استفاده کنیم.
FLAG 
UCTF{b4b4k_fort}
نویسنده