2 min read

[CTF GEMA] Static

CTF GEMA Groupe 2025

Niveau de Difficulté : Medium

Catégorie du Challenge : Reverse

Description :

C'est trop long !

Steps to Solve

Exécution du fichier exécutable

Local Image

On peut voir qu'au lancement du fichier, il demande une entrée.
Après l'avoir saisie, il affiche "lose", ce qui signifie que l'entrée est incorrecte.


Analyse

Local Image

Nous allons analyser le fichier en cherchant directement le mot "lose", ce qui facilitera la recherche car la fonction principale est trop longue.

Local Image

Ici, on voit qu'il compare local_118 et local_138.

  • S'ils sont identiques, il affiche "nice".
  • Sinon, il affiche "wrong input".
Local Image
  • local_118 est la valeur chiffrée du flag, stockée sous forme de vecteur (tableau).
Local Image

Dans cette partie, on observe que local_d8 provient de cin, ce qui signifie que c'est l'entrée utilisateur.
Ensuite, cette valeur est transmise à la fonction cypher, qui effectue le chiffrement.

  • Cette fonction prend deux paramètres :
    • Le premier est l'entrée utilisateur.
    • Le second est la clé, qui correspond à local_30.

Fonction de chiffrement

Local Image
Local Image

Dans la fonction cypher, plusieurs opérations sont appliquées pour chiffrer les données.
Pour retrouver la bonne entrée, nous devons inverser ces opérations.

Les opérations utilisées sont :

  1. XOR
  2. Shift (décalage de bits)

Rétro-ingénierie du chiffrement

  • Shift :
    • Si c'est un décalage à gauche → le convertir en décalage à droite.
    • Si c'est un décalage à droite → le convertir en décalage à gauche.
  • XOR :
    • Pas besoin de modifier l'opération, il suffit d'appliquer l'inverse sur le texte chiffré.

Une fois ces opérations inversées, nous pouvons récupérer le texte déchiffré et l'utiliser pour obtenir le flag.

Local Image

Flag

FLAG{63n3r4l_3ncryp710n}