Voici la correction du CTF de rentrée 2014.

1ère étape

Le code inséré dans l’image est du code binaire. Il faut le transformer en assembleur pour pouvoir l’exploiter. Pour cela, on va utiliser un désassembleur. J’ai utilisé OnlineDisassembleur, qui a l’avantage d’être un site Internet donc disponible depuis n’importe quelle plateforme. Voici son URL : http://www.onlinedisassembler.com/

On récupère alors le code assembleur généré et on le stocke dans un fichier .asm

On ajoute les lignes suivantes au début du fichier :

On modifie également la ligne

en

afin que nasm puisse « compiler » le code.

Après avoir sauvegardé le fichier, on exécute les commandes suivantes sous Linux pour voir apparaitre la solution de la première étape.

Le message suivant apparaît alors dans la console :

Win ! next : https://j-feist.com/pwn

2ème étape

La page https://j-feist.com/pwn n’affiche qu’une ligne de texte à première vue assez incompréhensible.

Ovra wbhr ! Yn cebpunvar rgncr : uggcf://w-srvfg.pbz/png

Avec un peu d’expérience, on reconnaît un code de César. Il y a alors trois méthodes pour le casser :

  • Brute force : C’est la méthode la plus simple, on essaye les 26 valeurs de décalage possible sur le texte chiffré et on regarde celle qui donne un texte lisible (en français). L’inconvénient de cette méthode et qu’elle n’est pas pratique sur de longs textes.
  • Analyse fréquentielle : Cette méthode est plus complexe à mettre en œuvre que la précédente mais est plus efficace. Le principe reste simple : A l’aide de longs textes comme Les Misérables de Victor Hugo ou L’Assommoir d’Emile Zola (disponibles gratuitement ici (On veillera à choisir un format texte brut (*.txt)) : http://www.gutenberg.org/et on effectue des statistique sur le nombre d’apparition de chaque lettre. On effectue ensuite des statistiques sur l’apparition de chaque lettre dans le message chiffré. Il ne reste qu’a comparé les résultats obtenus. Deux lettres ayant les mêmes fréquences d’apparitions sont équivalentes. On peut alors en déduire le message déchiffré.
  • Ici, il existait une méthode triviale pour découvrir la valeur du décalage et alors déchiffrer rapidement le texte. On peut en effet remarquer que uggcf:// correspond à https://, il suffit alors de calculer le décalage qui vaut 13.
    J’ai ensuite réalisé un script Python permettant d’automatiser le déchiffrement.

    On a alors le message suivant sur la console :

Bien joue ! La prochaine etape :

https://j-feist.com/cat

3ème étape

On entre alors dans l’épreuve la plus complexe du challenge. Le lien précédent nous affiche juste une image de chat dans un carton, visible ci-dessous :

cat

Il s’agit de stéganographie par bit de poids faible. On utilise Stegsolve afin de récupérer le texte présent dans l’image. On obtient alors l’écran suivant :

steg

Le challenge est terminé !

Pièces jointes

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Post Navigation