ctr
Catégorie: Crytpo Difficulté: Facile Flag: CTF{d6bd1954527310f3f831baa46582f553a9e780d8fa747637d25da1281c24edaf}
Challenge
Description
Are you feeling down? Here is a list of exciting words for you, hope you'll feel better after this. (probably not)
Ce challenge tourne sur un docker et n'est pas disponible
Solution
Dans un chiffrement par CTR, on utilise un nonce à qui l'on ajoute un compteur et l'on chiffre le tout avec une clé. Le résultat de ce chiffrement est xoré avec le plaintext que l'on souhaite chiffrer.

Ici, le nonce et la clé sont réutilisés dans l'oracle du serveur. Ce qui veut dire qu'on peut faire une attaque par clair choisi et en déduire la valeur des blocs chiffrés utilisés dans le XOR, on va les appeler les KEYSTREAM.
De là, on peut tenter de XOR chaque chiffrés que l'on a dans ctr.txt et voir s'ils donnent quelque chose de lisible. Exemple avec le premier f24e8c4bb594b2590edc658609608f16
C'est le keystream n°66 qui a pu déchiffrer la première ligne de ctr.txt.
On sait que le flag est sous la forme CTF{sha256}, soit 69 caratères, c'est à dire le même nombre de ligne que contient ctr.txt.
On s'apperçoit aussi que l'ascii de C est 67 c'est à dire le numéro de notre bloc si l'on commence à compter à partir de 1 et non 0.
Il suffit donc de faire la même opération pour toutes les lignes de ctr.txt et regarder le numéro du keystream qui les déchiffre.
Mis à jour