Spiegazione e soluzione della challenge gitgud. https://training.olicyber.it/challenges#challenge-12
Find a file
2026-03-26 23:10:44 +01:00
assets/images Finito la soluzione 2026-03-26 23:08:01 +01:00
.gitignore Finito la soluzione 2026-03-26 23:08:01 +01:00
gitgud.zip Aggiunto la spiegazione del codice 2026-03-26 22:12:25 +01:00
README.md Aggiunto il link alla challenge nel titolo 2026-03-26 23:10:44 +01:00

gitgud

Descrizione

Autore: @kientuong114

Abbiamo ritrovato questo zip nel pc di un software developer, sembra che abbia cancellato le informazioni importanti... o così sembrerebbe...

Strumenti e conoscenze necessarie

Strumenti: git, 7-Zip, un qualunque terminale

Per risolvere questa challenge dobbiamo conoscere bene git, e come navigare una repository git.

Spiegazione

La challenge ci dà una cartella zip (gitgud.zip), per cui dobbiamo aprirla con uno strumento come 7-Zip.

Una volta aperta la cartella zip, ci ritroviamo dentro una repository git.

Git è uno strumento che ci permette di creare delle versioni del codice chiamate commit. Ogni commit ha un hash (risultato dei dati che sono stati dati ad un algoritmo di hash) che lo identifica.

La cosa importante da notare di una repository git, è che possiamo navigare nelle sue versioni del codice. Quindi possiamo passare da una versione più recente del codice ad una più vecchia.

Soluzione

Apri soluzione

Prima di tutto, vediamo lo storico della repository utilizzando il comando git log sul terminale aperto nella cartella. Ma utizzare solo git log non è molto bello, quindi utilizziamo invece il comando git log --all --graph --oneline all'interno della repository.

screenshot di git log --all --graph --oneline

Dal comando possiamo osservare il grafico dello storico della repository git. Un'altra cosa che ci salta immediatamente ad occhio è la presenza di un file .gitignore. Il file .gitignore è un file speciale della repository git, che dice a git di non tracciare i cambiamenti di certi file che hanno un match con il suo contenuto.

Se guardiamo il contenuto di .gitignore allora notiamo la presenza di un key.txt, questo vuol dire che la l'autore della repository non vuole tracciare il file key.txt dopo averlo aggiunto.

Utilizziamo il comando git checkout <hash del commit> per muoverci nello storico. Per esempio, andiamo a controllare il commit immediatamente precendente all'aggiunta del file .gitignore:

screenshot di git checkout 362cdfb

git checkout 362cdfb

Ma come vediamo, sembra che il file key.txt non contiene niente di utile. A questo punto ci rivorgiamo al contenuto del file main.py, e realizziamo che il nostro obbiettivo sarebbe trovare il contenuto della variabile PASTEBIN_API_KEY.

Forse possiamo trovare un commit con la variabile assegnata manualmente. Solitamente dovremo cercare per ogni commit, ma in questo caso nel grafico ci da occhio il commit chiamato pastebin!!.

Allora possiamo semplicemente muoverci su quel commit e verificare il contenuto dei file per ottenere in fine la flag.