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 π)
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
Exploiter la faille Log4Shell pour accéder au flag contenu dans un champ private d'une classe Java
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.
Voir le writeup complet (de quelqu'un d'autre) -
π« Enigma
999 points
Bruteforcer, de manière un peu futée (et veinarde) Enigma.
Voir le writeup complet (de quelqu'un d'autre) - π« 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
Voir le writeup complet (de quelqu'un d'autre)
Résultats
10e / 2460 avec 47308 points
Scoreboard, dΓ©tails sur les rΓ©sultats, etc disponibles ici