LE BLOG DE RICK Chasseurs de succès Linux Random WU

Par Rick dans WU le 21/04/2021.


Git de France

Cet article est le numéro 5 de la série WU PhackCTF 2021.

  1. WU PHACKCTF 2021
  2. Alien
  3. Alter Egg-o
  4. Ben & Harry
  5. Git de France
  6. Quick Response Code
  7. Tendu comme un slip & No strings

Le challenge demande de trouver un flag dans un historique Git. Si au début j’ai commencé avec des lignes de commandes, je suis très vite parti sur une interface graphique en pushant un mirroir du dépôt.

Lorsque j’ai commencé avec les lignes de commandes, j’ai en premier cherché dans les noms des commits, voir s’il n’y avait pas un indice. Bingo, un commit sur la branche master a un nom aguicheur (arff.. remove unused file) et le nom du fichier encore plus (.credentials). Sauf qu’il y a juste un Nothing here.. dans ce fichier, aucun flag. J’ai continué à regarder les noms des commits mais rien d’intéressant.

Je me suis alors dit « pourquoi ne pas regarder le contenu de TOUS les commits à la main et trouver le flag dedans ? ». J’ai alors push sur le git de Gnous le dépôt et j’ai commencé à lire tous les commits ainsi que les changements dans les fichiers les uns après les autres. Je suis finalement tombé sur le flag en commentaire dans un fichier de la branche search-engine.

Cette méthode n’est pas la meilleure, on perd beaucoup de temps en lecture; et dans un cas avec 100x plus de commit, ça aurait été infâme. Je suis retourné chercher un peu dans la documentation et j’ai finalement trouvé une commande git pour chercher un terme dans l’historique : git log -S PHACK. Plus qu’à rajouter une boucle for pour l’exécuter dans toutes les branch et on trouve le commit où est introduit ce terme :

for branch in $(git branch) 
do 
    git checkout $branch
    git log -S PHACK
done