Never Skip Class (Side/Fault) - FCSC 2022

Never Skip Class (Side/Fault) - FCSC 2022

Fichiers du challenge Principe:
Envoyer deux messages identiques, mais sauter une opération la seconde fois pour deviner bit à bit la clef privée RSA

Le challenge

Une implémentation RSA est glitché, et il va falloir exploiter mathématiquement ces erreurs pour trouver le flag

Explorer

Le script

D'abord, on explore les fichiers du challenge (le zip contient aussi mes résolutions) et on trouve comment stopper l'exécution du script python (envoyer 0x00)

Déchiffrer du RSA

On cherche en ligne quelques révisions sur le fonctionnement de RSA…
…et on s'assure de savoir déchiffrer un message si on donnait la clef privée d, puisqu'on va chercher cette clef en exploitant le glitch d'implémentation

Exploit

On envoie un même message (msg=2) une fois sans sauter de multiplication (skip = 1024, au-delà de la taille de d) et une fois en sautant une multiplication (skip = 1022):
le résultat diffère si et seulement si le 1022e bit de d est un 1

Ce n'est pas pour rien que la limite de messages est de 2 * BITS + 1: cela permet d'envoyer deux fois le même message ("avec et sans skip") et de comparer

On itère automatiquement pour reconstituer d bit par bit
On obtient la valeur de d
Et on peut décrypter (nota: le bit 0 est le bit de poid fort de d)

Livraison

On cable le script PHP au challenge en ligne et le flag tombe:
FCSC{c78e6725a5056d13b63cc4e8a98f6f6f7c6c091ecf0523377035d8faf203b20d}

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil