FCSC (French CyberSec CTF) 2022

FCSC 2022

Résultats (le détail, full board inclus, est ici) :
Points: 5884
28e/1347 au classement général
7e/580 au classement "hors catégorie"
Pour les deux classements, je ne tiens compte que de ceux ayant scoré 10 points au moins

J'ai pu scorer au moins 1 flag dans chaque catégorie, mais je n'ai pu finir à 100% que la catégorie "intro"

Welcome (6 / 6)

Meme Lord 1 Savoir envoyer un MP Discord
Welcome 1 Savoir lire la question du challenge et recopier le flag qu'elle contient
Prechall FCSC 2022 1 Trouver un texte caché dans une image, le déchiffrer, récupérer et lancer un programme de TI83+, le reverse-engineerer (ou brute forcer) pour obtenir le flag
Discord 1 Rejoindre le Discord du FCSC2022
netcat 1 Savoir se connecter à un serveur via nc
Sondage 1 Donner nos retours d'expérience du FCSC2022 au travers d'un sondage

Intro (260 / 260)

A l'envers 20 Créer un code (PHP ou autre) qui prendra en entrée ce que le serveur du FCSC envoie, et qui renverra en sortie le texte à l'envers
Dépassement de tampon 20 Un simple buffer overflow nécessitant de rediriger l'addresse vers un emplacement spécifique du programme, pour obtenir un shell. Envoyer correctement le payload fut le plus compliqué
Hamac 20 Un brute-force d'un hash via John The Ripper
QRCode 20 Un QR code dans lequel les 3 points d'ancrage manquent
Wifi 20 Donner le mot de passe WPA d'un Wifi à Wireshark pour déchiffrer un dump PCAP et récupérer le flag dans un échange HTTP qu'il contient
Shellcode 20 Générer un shellcode (64 bits!) et le passer à un programme qui l'exécutera, pour trouver et lire le fichier contenant le flag sur le serveur
Baby Morse 20 Juste parler en morse au serveur
Echec OP 0/3 20 Utiliser fdisk pour lire les infos d'une image RAW d'un disque dur
Header 20 Trouver et lire le code source du serveur web, puis envoyer un header HTTP avec une valeur spécifique pour obtenir le flag
Password Manager 20 Exploiter gdb pour accéder aux file descriptors d'un programme en cours de débug, et en lire le contenu (le flag)
A l'aise 20 Déchiffrer un code (Vigenère) dont on ignore la clef
Ne pas jeter l'éponge 20 Comprendre un circuit logique pour déterminer sa sortie
Sevensins 20 Déterminer l'entrée binaire à envoyer à un afficheur 8 segments pour lui faire afficher 'FCSC2022.'

Misc (1098 / 1375)

GuessMe 206 Deviner un nombre par dichotomie
Cupide 293 Exploiter un oubli de l'algo, ou choisir un système monérataire 'moisi'
XFactor 1 336 Observer une vidéo frame par frame pour récupérer un mot de passe
Color Plant 1+2 804 Accéler au système SCADA (virtuel) d'une usine, et utiliser un protocole OT (ModBus) pour manipuler des produits
Memelord 442 Exploiter une injection de commande, sans utiliser d'espace
Guess Me Too 456 Construire un système de redondance par parité pour trouver un bit inversé dans un secret

Web (301 / 1816)

Chapristi 200 Exploiter une SQL injection (via SQLmap parce qu'on n'a pas lu la FAQ)
Gare au gorille 101 Exploiter une XSS sur un admin fictif pour récupérer son token de login
Loginportal 232 Trouver le bypass utilisant des caractères unicodes invisibles
Cloud Password Manager 424 Utiliser la taille de font CSS pour faire apparaitre une scollbar, que l'on stylisera pour webkit via une URL d'image
MC Players 427
Avatar Generator 432

Pwn (316 / 3030)

Microroptor 316 Forger un syscall dans un bufferoverflow pour contourner la protection NX
XORaaS 344
Palindrome 420
httpd 477
Deflation 490
RPG 490
formatage 493

Side Channel and Fault Attacks (646 / 2105)

Never Skip Class 308 Envoyer deux messages identiques, mais sauter une opération la seconde fois pour deviner bit à bit la clef privée RSA
Never Skip Squares 338 Exploiter un glitch d'implémentation en envoyant deux messages identiques, encore
Myster Mask 474
(Not So) Secure AES 490
Secure Green Server 495

Crypto (1483 / 3842)

Shuffled 100 Ré-ordonner les caractères d'un flag en retrouvant la seed originelle et la bijection associée
My tailor is rich 226 Inverser un mauvais algo de hashage maison pour trouver 8 collisions avec une valeur arbitraire
Hash-ish 336 Lire la doc et le code Python-c sur le fonctionnement du hashage, et trouver des collisions
T-Rex 344 Résoudre une équation polynomial modulaire 31337 fois (via Sage) pour retrouver une clef AES
Gaston la Paffe 429
IZNOGOOD 474
Surface 477 Résoudre une équation sur les nombres congruents pour trouver une clef de chiffrement AES
Khal Hash 479
Share It 482
Millenium 495

Reverse (330 / 5062)

Souk 330 Tester puis placer les caractères du flag en comptant les JMP pris
Licorne 449
Iconic Licence 454
Zigoto 459
EXTerminated 472
Hyper Packer 474
Hexagonal 477
Diplodocus 477
Smarboot 2/2 482
More Hello 493
Perfect Cell 495

Forensics (583 / 2841)

C3PO 100 Explorer un dump réseau pour trouver un fichier-clef (image) contenant le flag
Echec OP 1/3 116 Montrer une image de partition et en trouver une méta donnée (date de création)
Echec OP 2/3 141 Explorer un dump disque pour retrouver un mot de passe (dans l'historique bash)
A l'ancienne 226 Reconstituer des fichiers lors d'une exfiltration via un tunnel DNS (en quasi-base64)
Echec OP 3/3 316
R2-D2 454
Antarctic Vault 1/2 490
R5-D4 498
Antarctic Vault 2/2 500

Hardware (866 / 2344)

Qui est-ce 146 Analyser (et brute-forcer intelligemment) un logigramme pour retrouver les entrées correspondant à une sortie donnée
Daddy morse 198 Envoyer un message en morse au format IQ (voir Mommy morse)
IC2You2 198 Analyser un signal via GTKWave pour retrouver le flag dans une transmission binaire
Mommy morse 324 Envoyer un autre message en morse, avec plusieurs fréquences de signaux
X-Factor 2/2 485
Smartboot 1/2 493
Objects connectés 500