Principe:
Exploiter un glitch d'implémentation en envoyant deux messages identiques, encore
Similaire au
challenge précédent
,
mais cette fois, l'élevation au carré sera ignorée
value = 1
for i, e in enumerate(exp):
if skip != i: value *= value
if e == "1": value *= x
value %= n
return value
Le code glitché (dispo ici, avec mes résolutions)
:
on appliquera une logique similaire consistant à envoyer un même message,
et sauter le i-eme bit de d pour savoir s'il valait 1
On applique donc le même genre de logique
On notera que la longueur de d a changé (512 bits)
On notera aussi que si le dernier bit (de poids faible) de d n'est pas géré par le script,
cela n'a aucun impact, car d est forcément impair (produit de grands nombres premiers, donc impairs)
Comme précédemment, on câble au challenge en ligne et le flag arrive:
FCSC{4f26ff30464a6bbeaefcfdddce92a18cb0836a236d2706aac8c81d99de}
↩ Retour à la liste des challenges
⇇ Retour à l'accueil