Spiegazione e soluzione della challenge iForgot https://training.olicyber.it/challenges#challenge-55
web
Find a file
2026-04-20 20:15:11 +02:00
assets/images add: aggiunge la soluzione 2026-04-20 20:15:11 +02:00
README.md add: aggiunge la soluzione 2026-04-20 20:15:11 +02:00

iForgot

Descrizione

Autore: bennesp

Qualcuno è davvero molto fiducioso di aver eliminato tutto quello che serviva per risolvere la challenge, ma forse è rimasto ancora qualcosa di nascosto in giro...

Sito: http://iforgot.challs.olicyber.it/

Strumenti e conoscenze necessarie

Strumenti: comando git

È necessario conoscere bene git e come funziona la cartella .git

Spiegazione

Abbiamo una pagina web in cui non è presente alcun dato informativo che ci può aiutare o suggerirci la flag. Se guardiamo nei cookie sappiamo che non ci sono cookie interessanti, e non ci sono neanche script html o css con ispeziona.

La descrizione del sito ci suggerisce che qualcosa è nascosto, cosa possiamo vedere per sapere una lista di file o cartelle in un sito remoto?

Indizzi

Apri indizio 1

Forse l'autore si è dimenticato di togliere una cartella che permette di tornare "indietro" nella storia?

Apri indizio 2

Hai dato un occhio a /robots.txt?

Soluzione

Apri soluzione

Prima di tutto possiamo controllare il file /robots.txt. Robots.txt è un file che definisce quali cartelle o file sul sito i crawler di google o i crawler in generale possono visitare, per cui potrebbe anche esserci una lista di file nascosti.

Visitando /robots.txt possiamo vedere che esistono 3 file o cartelle interessanti:

screenshot che mostra i file e cartelle che non devono essere visitate dai bot

A questo punto sappiamo che c'è una cartella .git (ricordiamo che una repository git contiene una cartella .git), un file index.js e un file package.json.

Controllando il file index.js, vediamo che contiene il codice del server:

codice del server

(Piccola nota: sappiamo che è un server in node,js visto che è presente un package.json creato da npm)

Ora tutto quello che ci serve è ottenere lo storico del file, perchè sicuramente sappiamo che il flag era presente nella repository. Per cui possiamo utilizzare uno strumento come git-dumper che estrae da una cartella .git esposta nel web tutti i dati necessari per ricostruire la repository.

Quindi in una nuova cartella, creiamo un ambiente virtuale python, e installiamo git-dumper (potete anche installarlo direttamente sul sistema):

python -m venv venv <- questo crea un ambiente virtuale python nella cartella corrente

source venv/bin/activate <- questo attiva l'ambiente virtuale su linux (dice a linux di utilizzare la versione di python e pip presente nella cartella venv)

pip install git-dumper <- questo installa git-dumper nel nostro ambiente virtuale

Una volta installato git-dumper possiamo utilizzare il comando git-dumper per scaricare la repository remota del sito web:

utilizzo di git-dumper sulla repository web

Questo creerà la cartella repo-remota, entrando nella cartella un semplice git log ci dirà lo storico della repository:

git log della repository

git log mostra che esiste un'altro commit (praticamente uno screenshot del codice) all'interno della repository, quindi possiamo 'viaggiare' a quello snapshot / screenshot del codice con git checkout

Prendendo il nome del commit (la stringa alfa-numerica accanto al messaggio di commit), usiamo git checkout <nome del commit> per viaggiare a quel commit:

git checkout al commit

Con git checkout ora siamo su quel commit, guardando di nuovo la cartella in cui siamo vediamo che il file flag.txt con la flag al suo interno ora è presente.