Prechall - FCSC2022
Principe:
Un challenge en deux étapes pour "s'échauffer": la première consiste à déchiffrer un texte caché dans une image qui mène à une URL et la seconde est un programme de TI83+ servant à valider le flag
Prechall — FCSC2022
Caché dans une image


il contient sûrement quelque chose
Stégano? Vraiment?


C'est sûrement de la stégano


J'ai donc cherché, pendant bien 30 minutes à 1h, un logiciel de stégano qui aurait trouvé quelque chose… Aucun n'a marché. J'ai failli abandonner, jusqu'à, par hasard, tenter complètement autre chose
Un simple contraste

Je pensais d'abord essayer d'associer chaque dino à 1 lettre, puis tester toutes les combinaisons de lettres possibles. Puis je me suis dit "les créateurs du challenge n'ont sûrement pas copié/collé des images de dino à la main: il existe peut-etre simplement une police 'dinosaures'?"


Comme on le voit, j'ai mis des "marqueurs" en noir sur l'image, pour découper arbitrairement le texte. Cela me permet de plus facilement faire les correspondances, "bloc par bloc".
1 1 WKSMGMGHI
1 2 MOQOYJO
1 3 PSIIOKVS
1 4 PKODLOKO
1 5 OUSPO
2 1 JOZOZCS
2 2 VVOQBO
2 3 MGHI
2 4 UKGHMOKOY
2 5 VSNLQS
2 6 ZOUUO
3 1 SJKOIIO
3 2 CUUPI://N
3 3 KSQZO-ZT
3 4 WOKI
3 5 OZHKLUT-
4 1 ZCSVVO
4 2 QBO.NK/W
4 3 PWZDKPVNBYD
4 4 YUBBBPWZ
WKSMGMGHIMOQOYJOPSIIOKVSPKODLOKOOUSPOJOZOZCSVVOQBOMGHIUKGHMOKOYVSNLQSZOUUOSJKOIIOCUUPI://NKSQZO-ZTWOKIOZHKLUT-ZCSVVOQBO.NK/WPWZDKPVNBYDYUBBBPWZ
Déchiffrement: Dcode




WKSMG MGHI MOQOY JO PSIIOK VS PKODLOKO OUSPO JO ZO ZCSVVOQBO MGHI UKGHMOKOY VS NLQ S ZOUUO SJKOIIO
BRAVO VOUS VENEZ DE PASSER LA PREMIERE ETAPE DE CE CHALLENGE VOUS TROUVEREZ LA FIN A CETTE ADRESSE
CUUPI://NKSQZO-ZTWOKIOZHKLUT-ZCSVVOQBO.NK/WPWZDKPVNBYDYUBBBPWZ
HTTPS://FRANCE-CYBERSECURITY-CHALLENGE.FR/BPBCMRPLFGZMZTGGGPBC

La TI83+
Emulateur






Si on tente de lancer le programme via "Prgm", une erreur apparait. En la cherchant sur internet, on trouve la solution (la syntaxe ci-dessus) fournie sur le site de Texas Instrument.

Modifier le code et rusher






Comme d'autres flags, celui-ci n'est donc pas contenu dans le programme (de la TI), mais est l'entrée à donner au programme (non modifié) pour atteindre le "Bravo!"
Reverse engineer? ou brute-force?

Il y a sûrement plus subtil, mais je n'ai pas réussi à faire le reverse-engineering propre du programme
Passer par le débugger était long… J'ai donc finalement modifié de nouveau le programme, pour rajouter les NOP permettant d'atteindre le "Bravo". Puis, j'ai remis le code du premier JUMP, et deviné lettre par lettre!

On n'oublie alors pas de remettre le code du 2nd JUMP, et on recommence pour la seconde lettre, en conservant la première, qui est valide.



Je vous recommande de toujours garder une copie de ce que vous téléchargez pendant un CTF: cela vous permet de revenir dessus pour tester vos réponses, sans risquer de la tester avec un programme modifié!
