Aller au contenu principal

CTF « L'affaire Duval » — Chapitre 3 : le dépôt de la boutique

Le paiement de la boutique en ligne a été détourné. Le stagiaire jure avoir « supprimé la clé » de son code. Retrouvez ce qu'il a vraiment laissé derrière lui, et dites quoi faire.

info

Ce chapitre est un CTF : pas d'étapes guidées. Vous cherchez, vous trouvez un flag, puis vous le saisissez dans l'application Joligo, dans l'activité « Chapitre 3 : le dépôt de la boutique ». Maxime Leroy, l'imprimerie Duval et la clé de paiement sont fictifs.

attention

N'utilisez jamais une vraie clé ou un vrai mot de passe dans un exercice. Ne fouillez jamais l'historique d'un dépôt qui n'est pas le vôtre sans autorisation.

Petite vérification​

Avant de commencer, vérifiez si vous savez encore réaliser ces 3 actions très simples, sur la séance précédente consacrée à Git et aux secrets :

  1. dans ~/tp-git-secrets/site-librairie (à recréer avec les étapes 1, 2 et 4 de la séance précédente s'il n'existe plus), lancer git log --oneline et compter les commits
  2. retrouver l'ancien mot de passe avec git log -p -- .env
  3. citer la toute première mesure à prendre face à un mot de passe commité
📌 Réponse attendue

Votre mission​

Après les chapitres 1 et 2, vous auditez le code de la boutique en ligne de l'imprimerie. L'historique Git du dépôt est le dernier endroit où chercher. Retrouvez la clé de paiement de production que l'équipe croit disparue, puis proposez la bonne réaction.

Le matériel​

Chaque participant reçoit un flag personnel : inutile de comparer avec vos voisins, le vôtre ne marcherait pas chez eux. Dans l'application Joligo, ouvrez l'onglet Profil et relevez votre code personnel (8 caractères, carte « Mon code personnel (défis CTF) »).

Dans votre VM Debian, avec Git installé (remplacez a1b2c3d4 par votre code) :

sudo apt install git openssl
mkdir -p ~/ctf-duval/chapitre3
cd ~/ctf-duval/chapitre3
CODE=a1b2c3d4
attention

Le script ci-dessous fabrique les fichiers du scénario (c'est le travail du « méchant » de l'histoire). Ne le décodez pas pour le lire : ce serait lire la solution avant d'avoir cherché. Analysez les fichiers produits.

base64 -d <<'EOF' | bash -s -- "$CODE"
Q09ERT0iJDEiCmlmIFsgLXogIiRDT0RFIiBdOyB0aGVuIGVjaG8gIlVzYWdlIDogYmFzaCAtcyAt
LSBWT1RSRV9DT0RFIiA+JjI7IGV4aXQgMTsgZmkKS0VZPSIzODg4ODdkYmU5ZTk1OTI2YjZiNyIK
RkxBRz0kKHByaW50ZiAlcyAiJENPREUiIHwgb3BlbnNzbCBkZ3N0IC1zaGEyNTYgLWhtYWMgIiRL
RVkiIC1yIHwgY3V0IC1jMS0xMikKZ2l0IGluaXQgLXEgLWIgbWFpbiBib3V0aXF1ZS1kdXZhbApj
ZCBib3V0aXF1ZS1kdXZhbApjKCkgeyBHSVRfQVVUSE9SX0RBVEU9IiQxIiBHSVRfQ09NTUlUVEVS
X0RBVEU9IiQxIiBnaXQgLWMgdXNlci5uYW1lPSJNYXhpbWUgTGVyb3kiIC1jIHVzZXIuZW1haWw9
Im1heGltZS5sZXJveUBpbXByaW1lcmllLWR1dmFsLmV4YW1wbGUiIGNvbW1pdCAtcSAtbSAiJDIi
OyB9CnByaW50ZiAnPD9waHBcbmVjaG8gIkJvdXRpcXVlIGVuIGxpZ25lIEltcHJpbWVyaWUgRHV2
YWwiO1xuJyA+IGluZGV4LnBocApnaXQgYWRkIGluZGV4LnBocCAmJiBjICIyMDI2LTA5LTAxVDA5
OjAwOjAwIiAiUGFnZSBkJ2FjY3VlaWwgZGUgbGEgYm91dGlxdWUiCnByaW50ZiAnPD9waHBcbiRh
cGlLZXkgPSAiQ0xFLURFLVRFU1QtQS1SRU1QTEFDRVIiO1xuJHBhaWVtZW50ID0gImh0dHBzOi8v
cGFpZW1lbnQuaW1wcmltZXJpZS1kdXZhbC5leGFtcGxlL2FwaSI7XG4nID4gY29uZmlnLnBocApn
aXQgYWRkIGNvbmZpZy5waHAgJiYgYyAiMjAyNi0wOS0wM1QxNDozMDowMCIgIkFqb3V0ZSBsYSBj
b25maWcgZHUgcGFpZW1lbnQgKGNsZSBkZSB0ZXN0KSIKcHJpbnRmICc8P3BocFxuJGFwaUtleSA9
ICJwa19saXZlX0pPTElHT18lcy0yMDI2IjtcbiRwYWllbWVudCA9ICJodHRwczovL3BhaWVtZW50
LmltcHJpbWVyaWUtZHV2YWwuZXhhbXBsZS9hcGkiO1xuJyAiJEZMQUciID4gY29uZmlnLnBocApn
aXQgYWRkIGNvbmZpZy5waHAgJiYgYyAiMjAyNi0wOS0wOFQxMToxMDowMCIgIlBhc3NlIGVuIHBy
b2R1Y3Rpb24iCnByaW50ZiAnPD9waHBcbiRhcGlLZXkgPSBnZXRlbnYoIlBBSUVNRU5UX0FQSV9L
RVkiKTtcbiRwYWllbWVudCA9ICJodHRwczovL3BhaWVtZW50LmltcHJpbWVyaWUtZHV2YWwuZXhh
bXBsZS9hcGkiO1xuJyA+IGNvbmZpZy5waHAKZ2l0IGFkZCBjb25maWcucGhwICYmIGMgIjIwMjYt
MDktMTBUMTY6NDU6MDAiICJMaXQgbGEgY2xlIGRhbnMgdW5lIHZhcmlhYmxlIGQnZW52aXJvbm5l
bWVudCIKZWNobyAiRMOpcMO0dCBjcsOpw6kgOiBib3V0aXF1ZS1kdXZhbCIK
EOF

Le script crée le dépôt boutique-duval tel que l'a laissé le stagiaire :

cd boutique-duval

Regardez config.php : il n'affiche plus aucune clé. Est-ce vraiment fini ?

Comment jouer​

  1. Fouillez le dépôt avec les commandes Git vues en cours.
  2. Répondez aux questions de l'activité Joligo « Chapitre 3 : le dépôt de la boutique ». Une partie porte sur le flag, une autre sur la réaction à avoir.
  3. Le flag est la partie de la clé de production placée entre pk_live_JOLIGO_ et -2026 : 12 caractères (lettres a à f et chiffres). Saisissez ces 12 caractères dans Joligo.
Besoin d'un coup de pouce ?

Cette démarche a été vue dans la séance Git et les secrets.