Spiegazione e soluzione della challenge Corrupted flag. https://training.olicyber.it/challenges#challenge-32
Find a file
2026-03-28 21:37:11 +01:00
assets/images Aggiunto la soluzione assieme ai screenshots 2026-03-28 21:37:11 +01:00
corrupted_file Aggiunto il template alla repository 2026-03-28 11:31:28 +01:00
README.md Aggiunto la soluzione assieme ai screenshots 2026-03-28 21:37:11 +01:00

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:

Immagine di binwalk che lavora

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:

Immagine di hexedit con il file corrotto

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:

Immagine della lista dei magic bytes su wikipedia

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:

Immagine dimostrativo dei byte errati su hexedit

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!