Password Manager (Intro) - FCSC 2022

Password Manager (Intro) - FCSC 2022

Principe:
Exploiter gdb pour accéder aux file descriptors d'un programme en cours de débug, et en lire le contenu (le flag)

Le challenge

Le challenge nous donne accès à une instance GDB à distance, qui permet d'accéder au flag

Le programme

On se connecte au serveur, et on arrive sur une instance gdb. On demande les info files
Impossible d'y trouver un flag.txt, on va donc lancer le programme run après avoir mis un break main pour stopper au début du programme
On avance instruction par instruction (si) mais comme c'est long, on c continue, et le programme segfault

Les file descriptors

Au vu de la description du challenge, je décide de recommencer de zéro, puis de chercher dans les fd (file descriptors) ouverts du programme si un flag.txt s'y trouve
Mais un shell lsof -p 5262 (équivalent en gros à shell -ls /proc/PID/fd/) ne donne rien

Le bon moment

Sauf que le programme est actuellement stoppé (breakpoint) au début! Peut-être que le fichier n'est pas encore ouvert, donc j'avance de ni +800 (800 instructions) et je trouve un handler ouvert vers le fichier

Pourquoi 800? Au pif. J'ai essayé 500, rien, 1000, trop loin, 800… réussi!

Maintenant que le handler du fichier est ouvert, on peut le lire grâce au programme:
FCSC{da8ae129af8512620bc6c9a711392395fba426edc6713819c1baffe004024ff2}

Je ne sais plus si on pouvait accéder au flag directement via shell /bin/bash, mais il me semble que le fichier du flag n'était pas accessible de notre utilisateur (uniquement de l'utilisateur sous lequel le programme "Password Manager" s'exécutait).
Cela pourrait toutefois être une autre façon de résoudre le challenge.

↩ Retour à la liste des challenges

⇇ Retour à l'accueil