Skip to content

Instantly share code, notes, and snippets.

@alberic89
Created April 3, 2024 16:28
Show Gist options
  • Save alberic89/524333429295bf203c3367e55a8f5fe0 to your computer and use it in GitHub Desktop.
Save alberic89/524333429295bf203c3367e55a8f5fe0 to your computer and use it in GitHub Desktop.
FCSC 2023 Aaarg

Type de fichier

Un premier test simple est de tenter de lire le fichier avec cat :

ELF>P@@�1@8
           @@@@@h��@�@@@��@@��  @ @��.>@>@8H.>@>@���@�@DDP�td(!(!@(!@DDQ�tdR�td.>@>@/lib64/ld-linux-x86-64.so
...

On voit qu'il s'agit d'un fichier binaire. On pourrait être tenté de l'exécuter, mais il y a plus simple.

Le flag

Si on regarde un peu plus loin dans le fichier, on voit dans les ligne suivantes :

...

L��D��A��H��H9�u�H�[]A\A]A^A_��H�H��F‍C‍S‍C‍{‍f‍9‍a‍3‍8‍a‍d‍a‍c‍e‍9‍d‍d‍a‍3‍a‍9‍a‍e‍5‍3‍e‍7‍a‍e‍c‍1‍8‍0‍c‍5‍a‍7‍3‍d‍b‍b‍7‍c‍3‍6‍4‍f‍e‍1‍3‍7‍f‍c‍6‍7‍2‍1‍d‍7‍9‍9‍7‍c‍5‍4‍e‍8‍d‍}D�����(���`X��������h�������X���PzRx

...

Ho, un flag !

L'astuce

Mais ce serait vraiment trop simple. Je copie/colle le flag dans un utilitaire qui me donne le nom des caractères Unicode et voit qu'il y a des caractères invisble entres les lettres.

Là, j'utilise Python pour éliminer les caractères non-imprimables mais on peux le faire par différent moyens :

flag = "F‍C‍S‍C‍{‍f‍9‍a‍3‍8‍a‍d‍a‍c‍e‍9‍d‍d‍a‍3‍a‍9‍a‍e‍5‍3‍e‍7‍a‍e‍c‍1‍8‍0‍c‍5‍a‍7‍3‍d‍b‍b‍7‍c‍3‍6‍4‍f‍e‍1‍3‍7‍f‍c‍6‍7‍2‍1‍d‍7‍9‍9‍7‍c‍5‍4‍e‍8‍d‍}"
print(*[_ if _.isprintable() else "" for _ in flag], sep="")

J'obtient en exécutant le script mon flag netoyé. J'aurait pu aussi le recopier à la main, mais c'est une solution de facilité.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment