Filer: Download challenge files
Writeup: Broken Invoice
Indledende Observationer
Jeg fik udleveret en fil, som ifølge challenge-beskrivelsen var en beskadiget faktura. Efter download kørte jeg:
| |
Outputtet viste blot:
| |
Der var altså ingen genkendt filtype, hvilket indikerede, at filens header (magic bytes) sandsynligvis var ødelagt.
Recon / Kortlægning
Jeg åbnede filen i HxD for at inspicere rå bytes.
Allerede i de første bytes kunne jeg se:
| |
I “decoded text"-kolonnen i HxD fremgik:
| |
Det var tydeligt, noget lignede en PDF-header.
En standard PDF starter med følgende magic bytes:
Hex:
| |
ASCII:
| |
I min fil var de første to bytes:
| |
men resten matchede:
| |
ASCII:
| |
Det betød, at %P (25 50) manglede, og at PDF-headeren derfor var korrupt.
Analyse
Fejlen i filen var simpel:
De første to bytes (magic bytes) var blevet overskrevet med
00 00Derfor kunne operativsystemet ikke identificere filtypen
PDF-parseren kunne ikke åbne filen
Angrebet
Jeg rettede de første to bytes i HxD:
Fra:
| |
Til:
| |
Altså genskabte jeg en korrekt PDF-header og gemte filen:
| |
Flaget
Efter rettelsen kunne filen åbnes som en normal PDF.
Inde i dokumentet stod flaget:
| |
Konklusion
Denne challenge udnyttede en korrupt file header. Ved at identificere manglende magic bytes og genskabe den korrekte PDF-signatur (%PDF-), kunne jeg reparere filen og åbne den. Flaget var derefter synligt i dokumentet.