Comme tous les ans l’ANSSI propose un préchallenge pour le FCSC. La première étape est de le trouver…
J’ai commencé par vérifier les WU sur hackropole des préchallenges des années précédentes pour me faire une idée d’où le trouver. En gros il est souvent sur la page principale du fcsc.
Un curl de la page et on obtient
<!--
/--------------------------\
| Salut toi, ça shrimp ? |
\--------------------------/
\
\
\_ .~q`,
░▓▓▒░░░░▒▒▓▒▓░ {__, \
▒░ ▒▓▒ \' \
░ ▓▒ \ \
▒▓▒▓▓▒▒ ▓ \ \
▓ ░▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓ ▒ \ `._ __.__
░ ▒▓▓▓▓▓▓█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓░▒▒ \ ~-._ _.==~~ ~~--.._
▒ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓ \ ' ~-.
▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓ ▒▓▓▓▓ \ _- -_ `.
▒▒ ░ ▒▓▒ ▓▓▓▓▓▒░ \ / } .- .\
▒ ▒ ▒ ▒▓▓▓▒ ▓▓░ `. | / } ( ; \
▓▓▓▓▓▓▓▒ `| / / ( : '\
▓▓▓▓▓▓▓▓ \ | / | / \ =
▒▒▓ ░ | /`-.______.\ |^-. \
▓▓▒▓ ▓▓ ▓▓▓▓▓▓▓ | |/ ( | `. \_
▓▓▓▓▓▓▓ ▓▓▓▓▒ ▓▓▓ | || ~\ \ '._ `-.._____..----.._=__
▓▓▓ ░▓▓░ | |/ _\ \ =~-.__________.-~~~~~~~~~'''
.o'___/ .o______}
-->
<!-- Prechall is at https://fcsc.fr/teasing -->
Un shrimp… et c’est la panique.
Première étape - clef ssh corrompue
On a une clef ssh privée et une clef publique sans le commentaire. Heuresement c’est possible de récupérer la clef publique depuis une clef privée.
ssh-keygen -y -f i-ve-lost-my-comment > i-ve-FOUND-my-comment.pub
On obtient une deuxième URL
Deuxième étape - reverse de calculatrice
On télécharge un fichier qui est un binaire pour calculatrice :
file veggie-dino.8xp
veggie-dino.8xp: TI-83+ Graphing Calculator (assembly program)
On trouve un émulateur de ti83 plus en ligne, une rom de ti83 plus(c’était pas si facile que ça) et on peut lancer le programme. On voit qu’on a un programme de snake avec un dinosaure qui veut manger une pomme.

Après quelques recherches, c’est parce que le programme est déjà compilé donc il faut le lancer avec Asm(prgmDINO)
On le lance et là magie: le programme se lance

Après avoir fait monter le score raisonnablement on se dit qu’il faut probablement atteindre le score de 9999 avant qu’il se passe autre chose et qu’on puisse finir cette étape.
J’ai essayé de postpone l’étape reverse le plus possible.
J’ai cherché les strings du programme, on voit apparaître 9999 quand on le change à 0001, rien ne change dans l’exécution.
En revanche quand on change 0f27 (9999 en little endian) par 0100 (0001 en little endian) on obtient le flag !

Troisième étape - audio steganography
On obtient cette super vidéo:
Je remets le disclaimer d’origine
⚠️ Attention, le son peut être fort.
On réalise qu’il y a un lien entre le son affiché et les images… et le warning nous dit très clairement que le son à une importance…
De plus le nom de la vidéo oscillart.webm nous met la puce à l’oreille.
Quand on ouvre l’audio dans audacity on voit deux canaux, et le concept de l’oscillart est de faire de l’art sur oscilloscope, en mode xy avec une piste qui décrit le mouvement selon l’axe x et l’autre le mouvement selon l’axe y.
La vidéo correspond donc à l’audio.
On trouve un oscilloscope en ligne qui prend des wav, donc on convertit notre vidéo en wav et on la relance et on voit “s’afficher” le flag. J’ai pris beaucoup de temps avant de réaliser que le . était un _ mais à part ça tous les caractères étaient très lisibles.
Merci pour ce préchall très original !