Préambule
Les 'write ups' avec une π ont un article dédié (détaillé), les autres n'ont qu'un TL;DR vous donnant la piste de résolution.
Vous trouverez les 'sources' originale du challenge ansi que mes 'screens' de résolution et mes éventuelles notes/scripts de solution en cliquant sur le symbole πΎ du challenge.
Le flag
est aussi donné (quand je l'ai trouvé), pour indication (et puis, cela pourrait aider au référencement pour l'année suivante π)
Pour ce CTF…
J'ai aussi fait une archive avec tous les fichiers des challenges , si vous n'avez pas envie d'aller voir chaque writeup π
Challenges
Divers
6038 / 7038 points-
π©
8vers10 π
999 points
πΎ
404CTF{d3C0d3r_l3_8b10b_c_f4c1l3}
Convertir un nombre décimal de la base 10 à la base 8 et le lire comme un sample d'audio
-
π©
Bienvenue π
50 points
πΎ
404CTF{B13nV3Nu3_Ch3Z_L3s_s3rv1C3s_s3cr3Ts!}
Savez-vous copier/coller un texte?
-
π©
Discord π
50 points
πΎ
404CTF{4v3z_v0vz_lv_l35_r36l3z?}
Avez-vous Discord et savez-vous en lire les règles?
-
π©
Gogolfplex π
990 points
πΎ
404CTF{Und3r5c0r35_1n_1nt3g3r5??}
Savoir que Python autorise les underscores '_' dans les int pour gagner un 'jeu' de golf
-
π©
Je suis une théière π
899 points
πΎ
404CTF{418_A_m4ze_ing_Te4P0t}
Trouvez un domaine caché et résolvez un mini-jeu puis déchiffrez le flag en base64
-
π©
Par câble π
984 points
πΎ
404CTF{N0n3_R3tUrn_Z3r0_InV3rtEd_f0r3v3r}
Transformer un signal numérique de tension en ASCII via Return-Zero Inverted
-
π©
Pierre-papier-hallebarde π
100 points
πΎ
404CTF{cH0iX_nUm3r0_4_v1c701r3}
Exploiter un input() python… Pour ma part, en lisant le flag bit-à-bit
-
π©
Un utilisateur suspicieux 1/2 π
980 points
πΎ
404CTF{D1sc0rd_&_injection_SQL}
Exploiter une injection SQLite dans un bot Discord
-
π©
Un utilisateur suspicieux 2/2 π
986 points
πΎ
404CTF{17_s_4g155417_3n_f4iT_d_1_b0t}
Exploiter un shell restreint pour lire le flag via stderr et la commande '.'
-
π«
Joutes, Arches, Vallées & Arbalètes π
1000 points
Cryptanalyse
7043 / 10906 points-
π©
Hackllebarde Ransomware 4/4 π
1000 points
πΎ
404CTF{W0w_p4s_Tr3S_r4nD0m_T0ut_c4}
Brute-forcer la seed d'un 'rand()' pour reproduire les mêmes valeurs de la suite aléatoire (non-crypto safe) et s'en servir pour déchiffrer un PDF donnant le flag
-
π©
La fonte des hashs π
979 points
πΎ
404CTF{yJ7dhDm35pLoJcbQkUygIJ}
Brute-forcer un (mauvais!) algorithme de hashage pour retrouver le texte original
-
π©
Un RSA incassable? π
100 points
πΎ
404CTF{F41t35_4tt3t10n5_4v3c_l3_R54}
Factoriser le N d'un RSA pour trouver phi(N) et en déduire d, la clef de déchiffrement
-
π©
Un point c'est tout π
1000 points
πΎ
404CTF{L35_p01n75_f1x35_C'357_7r35_b13n}
Exploiter un point fixe non-trivial du RSA (un message qui, chiffré, est égale à lui-même) pour factoriser N = P*Q et retrouver d, qui permet de déchiffrer le flag
-
π©
Un simple oracle 1/2 π
981 points
πΎ
404CTF{L3s_0r4cl3s_RSA_s0n7_si_fr4g1l35}
Utiliser un oracle RSA et lui envoyer C * 2**e pour qu'il le déchiffre, nous renvoie m*2 et en déduire m, le message original (le flag)
-
π©
Un simple oracle 2/2 π
991 points
πΎ
404CTF{L3_m0dul3_357_t0uj0ur5_7r0uv4bl3}
Savoir que -1**d_premier mod N = N - 1 ce qui permet de déjouer l'oracle comme précédemment, même si celui-ci ne nous donne pas le module N
-
π©
Une lettre bien mystérieuse π
998 points
πΎ
404CTF{gargantua_et_pimprenelle}
Appliquer un déchiffrement par substitution prenant en compte les accents, ponctuations, etc
-
π©
Weak signature π
994 points
πΎ
404CTF{Th1s_Ch3cksum_W4s_Tr4sh}
Comprendre l'algorithme de signature d'un exécutable (très, très mauvais algorithme!) et en forger un à partir d'un exemple de démonstration
-
π«
Dégâts collatéraux π
1000 points
Exploiter un padding oracle pour trouver, bit à bit, la clef de déchiffrement.
-
π«
Enigma π
999 points
Bruteforcer, de manière un peu futée (et veinarde) Enigma.
-
π« Puisse Kocher être avec vous
1000 points
-
π« Quatre Oracles
864 points
πΎ
Ce challenge a Γ©tΓ© annulΓ© Γ la suite d'un dΓ©faut d'implΓ©mentation. Il a Γ©tΓ© remplacΓ© par les deux autres challenges d'oracles. J'ai conservΓ© les fichiers, mais n'ai donc pas de writeup.
Exp. Binaires
3061 / 5061 points-
π©
Cache cache π
989 points
πΎ
404CTF{13_10UP_D3V0r3_14_H411384rD3}
Avancer l'heure de sa machine pour connaître le mot de passe 'aléatoire' d'accès au challenge à venir, puis utiliser ce mot de passe sur le serveur lorsque l'heure du serveur correspond à celle modifiée
-
π©
Patchwork π
995 points
πΎ
404CTF{C3_r3CrU73M3N7_N357_P45_53CUr153!}
Exploiter un overflow via ret2libc pour obtenir un shell et lire le flag
-
π©
Sans protection π
977 points
πΎ
404CTF{V0U5_3735_Pr37_P0Ur_14_Pr0CH41N3_M15510N}
Exploiter un binaire classique en prenant la main sur l'EIP pour rediriger l'exécution vers la stack (NX disabled) et obtenir un shell pour lire le flag
-
π©
Trop facile π
100 points
πΎ
404CTF{C_7r0P_F4C113_D3_PWN_14_H411384rD3}
Débugger un exécutable pour trouver quelle entrée nous donnera un shell, et l'exploiter pour lire le flag
-
π« Changement d'architecture 2/2
1000 points
-
π« Coffre-fort
1000 points
Forensics
8606 / 8606 points-
π©
Floppy π
100 points
πΎ
404CTF{@v3z_v0vz_z0rt1_135_p0ub3ll35}
Récupérer des fichiers 'effacés' d'une image disque
-
π©
Hackllebarde ransomware 1/4 π
968 points
πΎ
404CTF{L3s_fL4gS_TCP_Pr1S_3n_fL4G}
Reconstituer un fichier PDF exfiltré en utilisant les flags TCP comme tunnel
-
π©
Hackllebarde ransomware 2/4 π
997 points
πΎ
404CTF{192.168.61.137:13598:JeNeSuisPasDuToutUnFichierMalveillant:https://www.youtube.com/watch?v=3Kq1MIfTWCE}
Retrouver des informations dans un dump mémoire (ce que j'ai fait via grep, et non volatility)
-
π©
Hackllebarde ransomware 3/4 π
1000 points
πΎ
404CTF{D3l3t1nG_4nD_P4sSw0Rds_n0T_3N0UgH}
Le flag est dans l'historique d'un fichier KDBX qu'on doit cracker (pass + fichier clef) lui-même dans un zip chiffré (pass) qu'on localisera dans l'image RAW d'une clef USB
-
π©
Pingpong π
832 points
πΎ
404CTF{Un_p1ng_p0ng_p4s_si_1nn0c3nt}
Analyser un dump 'pcap' pour découvrir que la longueur du champ DATA des requetes PING représente un caractère ASCII
-
π©
SOS Raid 1/2 π
960 points
πΎ
404CTF{RAID_5_3st_p4s_tr3s_c0mpl1qu3_1abe46685ecf}
Reconstruire une image disque d'un RAID5 et trouver le flag qu'elle contient
-
π©
SOS Raid 2/2 π
980 points
πΎ
404CTF{L4_C0rr_pt10N_s3_r_p4r_}
Corriger le fichier PNG corrompu (0x0A, CRC32, chunck lengts) issu du challenge 1/2 pour y trouver le flag
-
π©
Un agent compromis 1/3 π
864 points
πΎ
404CTF{t3l3ch4rg3m3n7_b1z4rr3}
Repérer, dans un dump réseau, un script python (qui servira à exfiltrer des données plus tard)
-
π©
Un agent compromis 2/3 π
917 points
πΎ
404CTF{exfiltration.py,flag.txt,hallebarde.png,super-secret.pdf}
Analyser le dump réseau pour retrouver, dans un tunnel DNS, les fichiers exfiltrés par l'insider
-
π©
Un agent compromis 3/3 π
988 points
πΎ
404CTF{DNS_3xf1ltr4t10n_hallebarde}
Patcher un fichier PDF corrompu pour pouvoir l'ouvrir et lire le flag qu'il contient
OSINT
2438 / 3425 points-
π©
Collaborateur suspect π
927 points
πΎ
404CTF{R3G4rd3r_3n_arr13r3_p3uT_3tR3_1Nt3r3ss4Nt}
Utiliser archives.org pour retrouver des informations dans une page archivée, qui a été modifiée depuis
-
π©
Equipement désuet π
100 points
πΎ
404CTF{30_06_2012}
Reconnaître un minitel
-
π©
Nous sommes infiltrés! π
862 points
πΎ
404CTF{Att3nt10n_AU8_V13ux_C0mMiT5}
Trouver le lien d'un site caché dans les anciens commits des sources github du site personnel d'un faux-membre de HackademINT, pour y trouver le flag
-
π©
À l'aube d'un échange π
549 points
πΎ
404CTF{eb66c65861da9fe667f26667b3427d2c}
Identifier les bâtiments-clef d'une photo pour retrouver l'endroit d'où elle a été prise via Google earth (et ses vues 3D)
-
π« Nom d'une nouvelle recrue!
987 points
Trouver quelqu'un sur Linkedin, remonter Γ son site via son CV puis Γ son compte gmail, trouver sur Googlemaps un photo de son avion dans un avis de voyage, retrouver les vols de cet avion, croiser avec le commentiare pour avoir la bonne date de vol et en dΓ©duire sa destination
L'avion Γ©tant un stock image, j'ai cru que son numΓ©ro d'immatriculation Γ©tait un fake, donc je n'ai pas creusΓ©.
Donc, challenge non scorΓ©, et je n'ai pas gardΓ© de screen.
Programmation
2851 / 2851 points-
π©
128code128 π
977 points
πΎ
404CTF{W0w_c0d3_128_4_pLUs_4uCuN_s3cr3t_p0uR_t01}
Créer un programme qui déchiffrera un PNG contenant un code à barres (code128) écrit à l'envers et renverra la valeur déchiffrée (100x de suite) pour obtenir le flag
-
π©
Compression π
100 points
πΎ
404CTF{C0mPr3Ssi0n_m4X1m4L3_m41S_p4S_3ff1C4c3}
Créer un script extrayant plusieurs fois de site une archive récursive
-
π©
Données corrompues π
983 points
πΎ
404CTF{l4_b4s3_64_3ff1c4c3_m41s_c4pr1c13us3}
Décoder un base64 corrompu (ignorer les caractères en trop et remplacer le cyrillique par de l'ASCII), assembler les résultats et écouter le flag
-
π©
Découpé π
791 points
πΎ
404CTF{M4n1PuL4T10N_d'1M4g3S_F4c1L3_n0N?}
Réassembler des morceaux d'image pour donner un QRCode qu'on scannera
Reverse
7917 / 7917 points-
π©
Changement d'architecture 1/2 π
1000 points
πΎ
404CTF{Is_Th1s_4rM_LiTe_??!!???}
Retrouver un mot de passe (en explorant les registres et la stack d'un interpréteur de 'VM')
-
π©
Fourchette π
1000 points
πΎ
404CTF{SyMp4_l3S_f0rKs_N0n?}
Jouer sur des JUMP (ou sur les registres) pour amener l'exécution d'un programme jusqu'au déchiffrement du flag, et forcer ce déchiffrement à continuer jusqu'à être complet
-
π©
Frida-me π
999 points
πΎ
404CTF{Fr1d4_1s_S3xy}
Brute-forcer (même s'il y a plus subtil)Forcer un PIN de 8 chiffres avec les dates du CTF et voir que, coup de bol, ça passe!
-
π©
Mise à jour π
978 points
πΎ
404CTF{M3RC1_PY7H0N3.10_P0UR_L3_M47CH}
Brute-forcer un mot de passe caractère par caractère
-
π©
Mot de passe? π
100 points
πΎ
404CTF{C3_sYst3mE_es7_5ecUrisE}
Décompiler une class Java pour récupérer un mot de passe chiffré, et le déchiffrer (ce mot de passe étant le flag)
-
π©
Nos amis les portes π
1000 points
πΎ
404CTF{K33p_c4lM_4nD_r3VeRsE}
Simuler un circuit logique dans logisim, le corriger, et brute-forcer son entrée avec xdotools et un compteur loggé dans un fichier
-
π©
Pas de mise à jour π
992 points
πΎ
404CTF{R34D1NG_PYTH0N_BYT3C0D3}
Décompiler un script Python pyc, le lire et reconstituer l'algorithme de chiffrement du mot de passe pour retrouver ledit mot de passe
-
π©
Renverse la tour 1/2 π
866 points
πΎ
404CTF{P4sS1R0bUst3Qu3C4}
Brute-forcer (même s'il y a plus subtil) les entrées de 3 étapes de chiffrement pour retrouver le mot de passe original
-
π©
Renverse la tour 2/2 π
982 points
πΎ
404CTF{L3s4pp4rencesS0ntTr0mp3uses}
Trouver la logique liant deux constantes d'un fichier assembleur (qu'on peut reverse, mais ce n'est pas nécessaire)
Stéganographie
4475 / 4475 points-
π©
La méthode française π
1000 points
πΎ
404CTF{DELAMUSIQUEAVANTTOUTECHOSE}
Avoir de l'oreille (ou un spectrogramme) pour reconstituer la partition d'une musique et retrouver le chiffrement par substitution donnant le 'signal' à Hallebarde
-
π©
La plume à la main π
100 points
πΎ
404CTF{V1v3_l4_Fr4nc3_l1br3}
Lire un acrostiche calligraphié
-
π©
PNG: Toujours obèse 3/4 π
991 points
πΎ
404CTF{z71ll_0b3z3_&_st1ll_h4d_s3cr3tz_4_U}
Décompresser un chunk IDAT pour récupérer une nouvelle image PNG avec le flag
-
π©
PNG: Un logo obèse 1/4 π
358 points
πΎ
404CTF{0b3z3_f1l3_h4z_zup3r_spy_s3cr37}
Extraire les données excédentaires à la fin d'un fichier (une image PNG)
-
π©
PNG: drôles de chimères 2/4 π
930 points
πΎ
404CTF{7h47_v1c10us_m1zzing_z19natur3}
Extraire les données d'un chunck PNG custom (sTeG) pour constituer une nouvelle image PNG
-
π©
PNG: une histoire de filtres 4/4 π
100 points
πΎ
404CTF{7h3r3_15_n07h1n9_b4d_4b0u7_sc4nn3rz}
Analyser les valeurs de filtre des lignes de pixel du IDAT d'un PNG pour y trouver un flag encodé en base 4
-
π©
Stéréographie π
996 points
πΎ
404CTF{AV3Z_V0U5_U71L153_UN_VR41_05C1LL05C0P3}
Transformer un signal audio stéréo en coordonnées (X;Y), les tracer, et lire le flag qui en résulte
Web
2966 / 2966 points-
π©
Du gâteau π
993 points
πΎ
404CTF{m3f13Z_V0Us_D3s_MdP_D4nS_L3s_c00k13s!}
Forger un cookie permettant d'usurper le compte de l'administrateur, et bypasser la blacklist avec un padding
-
π©
En construction π
999 points
πΎ
404CTF{Dr0l3_D3_m0Y3N_d3_f41r3_P4sS3r_d3S_d0nN33s_n0N?}
Identifier que le HTTP status code 2xx sert à passer un message encodé en ASCII par blocs de 9 bits (et non 8 bits)
-
π©
Fiché JS π
100 points
πΎ
404CTF{Haha_J3_5ui$_f4N_dObfu5c4tIoN_en_JS}
Derouler l'exécution d'un JS pas à pas dans une apge web pour trouver un code PIN menant à une page cachée contenant le flag
-
π©
Le Braquage π
874 points
πΎ
404CTF{VereuxUnGorfou014576945621ruedeskiwis2022-07-1401hDuMatinGorfousAuPouvoir}
Exploiter manuellement des SQL injections, y compris en bypassant le 'WAF', pour récupérer des informations constituant le flag
Web3
2092 / 3092 points-
π©
Clef publique π
997 points
πΎ
404CTF{0xb227feb5ecb369faf668f711f2331d163244fddb5e297be94fe30046b261732fda92d1afe5578f1d88c29ae439a7220ecc984701411742b5fec2b1639433100d}
Trouver la clef publique d'une adresse de la blockchain
-
π©
La guerre des contrats 1/2 π
995 points
πΎ
404CTF{5M4r7_C0N7r4C7_1NC3P710N_37_UND3rF10W_QU01_D3_P1U5_F4C113}
Créer un contrat appelant un contrat pour entrer dans Hallebarde (ou utiliser un contrat déjà existant)
-
π©
Pense-bête π
100 points
πΎ
404CTF{M0N_M07_D3_P4553_357_7r0P_53CUr153_6r4C3_4_14_810CKCH41N}
Explorer la blockchain via Etherscan pour trouver le flag dans un transaction passée
-
π«
La guerre des contrats 2/2 π
1000 points
Lire une variable "privée" d'un contrat de la blockchain
Résultats
Mon classement: 10e/2460 (avec 47308 points)
Tous les rΓ©sultats sont dans ce zip
avec le classement complet, la liste des challenges avec leur nombre de points,
et mon scoreboard
1765 challengers avaient scorΓ© au moins 1 flag utile (c'est Γ dire en ignorant le Bienvenue et Discord)
Mon objectif était top 10, c'est réussi!
J'ai clear tout le Forensic, Stéganographie, Programmation, Rétro-ingénierie (lol, probablement sans en reverse un seul!), tous les challenges Intro et Facile, et quasi tous les "Moyen" (sauf "En construction", snif…)
Top 10


Dans un CTF "long" comme celui-ci (environ 1 mois), il ne faut pas considérer sa place comme "acquise": il est possible de scorer et de flagguer jusqu'au dernier jour, voir, jusqu'à la dernière heure
Mon Scoreboard

Je ne regrette pas les 80 points "perdus" en hint pour Hackllebard ransomware 3/4: sans eux, je n'aurai pas scoré les 2 flags (le 3/4 et le 4/4) car je n'aurai pas persisté sur la piste du bruteforce du KeePass via John.
Je regrette en revanche d'avoir raté "En construction" π₯