Shuffled (Crypto) - FCSC 2022

Shuffled (Crypto) - FCSC 2022

Fichiers du challenge Principe:
Ré-ordonner les caractères d'un flag en retrouvant la seed originelle et la bijection associée

Le challenge

Les caractères du flag ont été mélangés: remettons-les en ordre

On procèdera en deux temps: on va d'abord retrouver la seed utilisée, puis on va retrouver l'ordre des caractères après mélange utilisant cette seed.

Trouver la seed

Dans les fichiers du challenge (dispo ici) , on voir que le flag a été mélangé via random.seed() puis random.shuffled(flag).
On va donc créer un faux flag
FCSC{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} que l'on mélangera avec toutes les seeds possibles (256 valeurs). On comparera alors la sortie au flag
f668cf029d2dc4234394e3f7a8S9f15f626Cc257Ce64}2dcd93323933d2{F1a1cd29db donné par le challenge. Les seeds possibles seront toutes celles pour lesquelles les caractères-clef FCSC{} seront correctement placés.

Faux-flag: FCSC{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} Résultat après shuffle (seed 125): xxxxxxxxxxxxxxxxxxxxxxxxxxSxxxxxxxxCxxxxCxxx}xxxxxxxxxxxxxx{Fxxxxxxxxx Flag donné par le challenge: f668cf029d2dc4234394e3f7a8S9f15f626Cc257Ce64}2dcd93323933d2{F1a1cd29db La seed est donc 125 puisque la position des caractères-clef correspond: __________________________S________C____C___}______________{F_________
En faisant tourner le fichier faker.py, on s'aperçoit que la seed utilisée est 125:

Remonter au flag

Maintenant qu'on a la seed, on va refaire la même chose mais en utilisant un faux-flag dans lequel chaque caractère sera différent. On pourra alors inverser le shuffle:

Faux-flag unique: FCSC{0123456789abcdefghijklmnopqrstuvwxyzABDEGHIJKLMNOPQRTUVWXYZ.:/!?} Résultat après shuffle (125): jgvMAPYs/0?3.Wh2QwOKauIf97SoHk8LVUDCmt!cCR:6}5dbJ1TlNBrp4XG{FzZyeEixnq Flag donné par le challenge: f668cf029d2dc4234394e3f7a8S9f15f626Cc257Ce64}2dcd93323933d2{F1a1cd29db Donc, le "j" du faux-flag original doit être remplacé par un "f" du flag réel le "g" par un "6", le v par un "6", le "M" par un "8", etc Flag original: FCSC{d93d32485aec7dc7622f13cd93b922363911c36d2ffd4f829f4e3264d0ac6952}
On retrouve le flag original avant mélange:
FCSC{d93d32485aec7dc7622f13cd93b922363911c36d2ffd4f829f4e3264d0ac6952}

La méthode marche car on a pu construire un flag dont chaque caractère est unique. Si le flag avait été plus long (plus de 256 caractères), on aurait été coincé.

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil