Vendredi 17 mars 2023 a eu lieu la 7ème édition du BreizhCTF au Couvent des Jacobins à Rennes. Durant toute la nuit, 120 équipes se sont affrontées sur des challenges de cybersécurité. Voici la solution du challenge BreizhChip.

Rappel de l’énoncé

Votre meilleur ami a conçu un chiffreur incassable…
Vous savez qu’il est un peu marseillais sur les bords : prouvez-lui qu’il a tort.

Il entre le mot de passe devant vous : le résultat est 56 3d 08 52 30 51 7b 6d 27 4a 6d 42 11 67 34 23 4b 24 08 20 34 3a 2d 6d 27 1a.

Solution

Ouvrons le fichier CIRC fourni avec logisim-evolution.

On peut y voir un circuit électronique avec 2 buffers d’entrée (ROM) qui arrivent sur une porte XOR, la sortie de ce XOR étant elle-même xorée avec un composant de type clavier.

Le résultat de ce dernier XOR est visible sur le double afficheur, 7 segments sous forme de chaîne hexadécimale.

Circuit à 0 coup d’horloge

Après quelques tests, on peut voir que l’index dans le buffer de gauche s’incrémente à chaque coup d’horloge, et celui de droite tous les deux coups. On aura donc toujours 0xdeadbeef xoré à 0xcacafefebababebe, puis xoré au clavier. En effet, l’état de chaque buffer et déterminé par un bascule D qui est incrémenté à chaque coup d’horloge pour le premier buffer et tous les deux coups pour le second.

Circuit après 2 coups d’horloge

Ce qui est pratique avec le xor, c’est que ça marche dans les deux sens. Étant donné qu’on connaît la sortie souhaitée, il suffit de la xorer à nos deux buffers et c’est bon.

Allez, par principe, vérifions les premiers caractères du flag (connus et communs à l’ensemble des flags) : BZHCTF.

Avec les premiers caractères du flag

On a bien les premières bonnes valeurs en sortie.

Faisons nos XOR avec l’ami cyberchef…

XOR dans cyberchef

À lire également