| assets/images | ||
| corrupted_file | ||
| README.md | ||
Corrupted flag
Descrizione
Autore: @staccahstaccah
Sono certo che questo file contenga la flag, ma non riesco proprio ad aprirlo. Potresti aiutarmi?
Strumenti e conoscenze necessarie
Strumenti: comando binwalk o sito hexed.it o qualunque strumento per modificare i byte esadecimali di un file
È necessario conoscere bene come i file sono strutturati in modo che il computer possa capire che tipo di file sono anche senza l'estensione come .exe, .png, .mp4, etc...
Spiegazione
Ogni file ha al suo interno certi bytes in esadecimale che possono determinare che tipo di file sono.
Questi bytes si chiamano magic bytes (o anche magic numbers / file signatures).
In alcuni casi, un file corrotto potrebbe essere semplicemente un problema di questi byte.
Soluzione
Apri soluzione
Abbiamo due soluzioni a questa challenge, una più facile, ma la seconda entra più nel dettaglio su come funzionano i file.
Soluzione 1
Per la soluzione più facile, possiamo semplicemente utilizzare binwalk per sul file assieme all'opzione -e per aprire estrarre direttamente il contenuto:
E nel file gif troviamo la flag in uno dei frame.
Soluzione 2
Per la seconda soluzione, è un po' più complicata, ma utilizza lo stesso concetto della soluzione 1.
Prima di tutto utilizziamo un editor esadecimale come hexed.it per aprire il file nel browser:
Non capiamo nulla, ma pensando come pensa un computer possiamo osservare che se un computer inizia a leggere un file, deve partire dalla cima fino in fondo. Questo vuol dire che se un computer deve riconoscere un certo tipo di file, è meglio se lo fa dalla cima.
Ecco perchè solitamente i caratteri per riconoscere un certo file è in cima.
Da una veloce ricerca su wikipedia otteniamo la lista dei magic bytes per i file:
Come vediamo, un file gif inizia con i seguenti byte: 47 49 46 38 37 61 (GIF87a) oppure 47 49 46 38 39 61 (GIF89a).
Se guardiamo di nuovo su hexed.it vediamo immediatamente che la seguenza GIF89a è lì, ma è preceduta da bytes a caso:
Quindi se utilizziamo hexed.it per selezionare tutti i byte prima della sequenza 47 49 46 38 37 61 e lo eliminiamo, otteniamo il file gif con all'interno la flag!