問題

通常のRSAは2つの素数を使いますが、今回は一つだけのようです


from Crypto.Util.number import *
import os

flag = os.getenv("FLAG", "flag{example}").encode()
m = bytes_to_long(flag)

p = getPrime(512)
e = 65537
ct = pow(m, e, p)

print(f"{p = }")
print(f"{e = }")
print(f"{ct = }")

TL;DR

解法

$c \equiv m^e \pmod p$

であるから、

$d \equiv e^{-1} \pmod {p-1}$

$m \equiv ct^d \pmod p$

ソルバ

from Crypto.Util.number import inverse, long_to_bytes

p  = 7053006329937394640578809003529950424006540078407576710977610896377332570587931209266308841802166045389105874282224525157800335000482365019181031916131567
e  = 65537
ct = 1207620648204721029719345249590236571809041832424398358565952316975026187064905972160827378199683620133257513725775137874934857698854513919128707181952938

d = inverse(e, p-1)
m = pow(ct, d, p)
print(long_to_bytes(m))