Cette fois-ci j'ai essayé de mieux protéger mon flag, tente de le récupérer !
Aide: Google, Python, Sagemath
Tout est dans le fichier output.txt.
Solution
Le challenge possède les clés privées dp et dq. Ce sont des versions réduites de l'exposant privé d modulo p-1 et q-1, respectivement, servant pour déchiffrer plus rapidemment. Cependant, puisque l'on connaît les valeurs de p, q, dp, et dq, même si l'on ne connaît pas n ou e, on peut facilement déchiffrer le flag en utilisant le théorème des restes chinois (CRT) :
# Valeurs dans output.txt
p = 11225581086325348803006809190487735063146359161155814829910785374339712046922950256107637721534510668953790204296165184092163928581968500478705517222717889
q = 8986674817160496999224608460133797685622810488041653801435515684771629247749727824990471672760071854421284820975080581682913095220681047683717629751794267
dp = 10286247783345227454216212403929993038239899701006914383945441416073709928038572588461967561702732337499152587677153482769835671500571499446842278800919745
dq = 2987925054029437258542567074268206533251766796381092151506475529413519100789883108878074641033949764374930134871095806565309311455492928102113419172247693
c = 66496533268970749969432812059290419894898521518726905732590511033826664273441569098499105643264514559399624247023350360812530836519946740466969692153128285225592109741757840197593845231927985498568066574542682269343797480802680009187051855202081693590630393799066611926266511777141666427111510001524127660174
# Décryptage en utilisant la méthode de décomposition chinoise
qinv = pow(q, -1, p) # Inverser q modulo p
m1 = pow(c, dp, p)
m2 = pow(c, dq, q)
# Combinaison avec le théorème des restes chinois
h = (qinv * (m1 - m2)) % p
m = m2 + h * q
# Affichage du message en clair
print(f"Message en clair : {m}")
# CTFREI{d0nt_l34k_t00_m4ny_1nf0s}