404CTF : Mon historique

Le 404CTF version 2023

Je me suis lancé pour la première fois dans les CTF avec le 404CTF, dans sa version de 2023. C'était très intéressant, motivant et challengeant. J'y ai pas mal appris car pour résoudre des flags, il faut assez souvent creuser le sujet par ailleurs afin d'aboutir.

Outre l'aspect technique, la difficulté pour moi était aussi de mobiliser suffisamment de temps sur ces sujets passionnants, malgré mon occupation au sein d'ads-COM. L'épreuve a duré un peu plus de 4 semaines et je dois avouer que j'ai dû un peu lâcher prise en route, par manque de temps.

Au final, j'ai fini 248ième, ce qui est plutôt pas mal pour une première participation.

Vous retrouverez le détail des challenges de cette édition 2023 de 404CTF sur GitHub.

Une particularité était qu'au-delà de la course à vouloir tout résoudre, les challenges d'introduction permettaient d'apprendre des approches ou des techniques pour obtenir des infos. C'était très instructif pour les challenges suivants.

J'ai notamment pu refaire du C que je n'avais pas touché depuis longtemps, mais aussi l'assembleur x86 et différents outils réseaux. C'était génial!

Le 404CTF version 2024

Fort de cette première expérience, j'attendais avec impatience l'édition 2024. Je me suis donc lancé dans le sujet.

Il m'a semblé que les challenges étaient un peu plus complexes cette année là. Néanmoins, j'ai bien pu en profiter et apprendre de nouvelles approches. C'était toujours aussi instructif et prenant.

Les challenges de l'édition 2024 du 404CTF peuvent être retrouvés sur GitHub.

J'ai pu atteindre la 297ième place, avec certains challenges qui m'ont bien fait mal... mais c'était intéressant quand même. J'ai pu faire du C et de l'assembleur à nouveau, ainsi que du Python, de l'analyse de dump mémoire, du réseau.

Le 404CTF version 2025

L'édition 2025 du 404CTF s'est déroulée à partir du 10 mai avec pour thème l'espace. Cette édition était visiblement attendue de pied ferme, et pas que par moi...

Les organisateurs nous ont concocté un petit échauffement en amont du démarrage du CTF : L'agence Astra. Une série de quelques challenges dont certains portaient sur de l'audio. Ce n'est pas un domaine que je maitrise et j'ai malheureusement été bloqué au 5ième sur 8.

Encore une fois, cet événement était vraiment sympa : Les challenges étaient variés, accessibles et j'y ai beaucoup appris. De plus, les échanges via Discord ont apporté une ambiance bien immersive et, parfois, des pistes qui permettent d'avancer et d'éviter de rester trop bloqué "bêtement" sur des challenges d'intro (ça arrive quand même...).

Cette épreuve durant 3 semaines, j'ai pu m'aménager quelques jours de congés où j'ai pu creuser en particulier des challenges un peu plus compliqués, sans succès malheureusement.

Au final, j'ai fini 201ième. J'ai bien vu, à quelques heures de la fin, ma position à 199, mais je n'ai pas réussi à la conserver en "Flagant" un nouveau challenge à temps. Néanmoins, 29 challenges c'est plutôt bien, je suis plutôt content de ce que j'ai fait à ce challenge, même si j'ai découvert un peu tardivement (la veille) que la catégorie Sécurité Matérielle était vraiment sympa. Ce sera donc pour l'année prochaine...

Mes outils pour les CTF

A chaque fois que je fais des CTF, je découvre de nouveaux outils qui permettent d'avancer sur les challenges. Ces outils peuvent évidemment servir dans d'autres cadres, aussi ça vaut le coup de les garder en tête.

Outils génériques

  • https://www.dcode.fr/ : Indispensable lors des précédents challenges, je l'ai encore pas mal utilisé. Ce site regorge d'outils en ligne très utiles : Décodage, résolution, conversion, ...
  • Même si dcode sait aussi le faire, j'utilisais plutôt epochconverter pour décoder les dates au format Unix
  • gVim : Mon éditeur préféré a toujours été de la partie. Il est indispensable de s'appuyer sur un éditeur bien maitrisé pour voir certaines nuances dans les fichiers (encodage, caractères de contrôle, ...)
  • Un bon navigateur comme Firefox avec notamment le "developper tools" qui montre de nombreux points bien utiles, permet de suivre les JS des sites des challenges web, ...
  • VS Code : Evidemment, j'ai pas mal utilisé VS Code pour écrire les programmes en C, en Python (et oui, je m'y mets...), en Expect, Shell, ...
  • wxHexEditor : Un éditeur/visualiseur hexa très pratique et capable de gérer de gros fichiers.
  • Une bonne table ASCII étendue (Dec / Hex / Caractère) toujours sous le clavier avec les caractères de contrôle au verso : Indispensable pour gagner du temps dans les recherches de pistes.

Pour la rétro-ingénierie

  • Ghidra : Même si l'affichage n'est pas top au niveau des fontes, cet outil fait bien le boulot quand il s'agit de décompiler des programmes binaires, de voir le code en assembleur, ...
  • PyInstaller Extractor* : Pour extraire les fichiers d'un programme Python transformé en exécutable
  • PyLingual* : Pour décompiler les programmes Python (.pyc)
  • WABT* : Cet outil pour les WebAssembly permet de décompiler des fichiers .wasm Bon après, il faut s'accrocher pour l'interprétation...

Pour les challenges web

  • JWT.io est un site très pratique pour voir et générer des tokens JWT. Ces tokens sont régulièrement utilisés donc savoir les décoder est utile.

Pour l'analyse forensique

  • Wireshark : Outil indispensable dans l'obtention et l'analyse de trames réseaux. De plus, pour les flux https, cet article rappelle comment décrypter ces flux lors de la capture.
  • Volatility : Permet d'analyser des dumps mémoire Windows, Linux, ...
  • Python-evtx* : Pour lire et rechercher facilement dans les événements Windows. Indispensable quand on est sous Linux (et heureux de l'être 😉).
  • libguestfs* : Librairie utile pour monter des systèmes de fichiers de machines virtuelles.

Pour la cryptanalyse

Pour l'exploitation de binaires

Pour les sons et fichiers audio

  • Un décodeur de Morse* : C'est plus rare, mais pratique lorsqu'il faut décoder un fichier audio en morse. Cependant, celui-ci n'est pas infaillible aussi j'ai dû utiliser en complément un "vulgaire" éditeur de Wav comme Audacity afin d'arrondir les angles. Ce dernier m'a permis de mieux voir le dernier caractère de la séquence.
  • L'outil QSSTV* est l'outil audio de Slow Scan Télévision qui m'a manqué pour le challenge 5 d'Astra. Avec lui, un fichier audio se transforme en image!

* Outil découvert lors du dernier CTF