| assets/images | ||
| .gitignore | ||
| gitgud.zip | ||
| README.md | ||
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.
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:
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.