Alog

Filer: Download challenge files Writeup: alog Indledende Observationer Jeg fik udleveret en access.log fil og skulle finde et flag gemt i loggen. Filnavnet og konteksten indikerede, at der var tale om webserver logs, sandsynligvis Apache eller Nginx. Jeg startede med at undersøge loggen manuelt og søge efter usædvanlige mønstre. Recon / Kortlægning Første skridt var at søge efter flagformatet direkte: 1 grep "DDC{" access.log Dette returnerede en interessant request, hvor flaget så ud til at være delvist til stede i URL’en. ...

June 18, 2026 · 2 min · Jeppe Sørensen

Binary Caesar

Filer: Download challenge files Writeup: Binary Caesar Indledende Observationer Jeg fik udleveret: encryption.txt (ciphertext) main.py (krypteringslogik) Ciphertextet var: 1 pporkmhce}taii_}tomi}m{s Ved første øjekast lignede det ikke klassisk Caesar (ingen simpel rotation). Recon / Kortlægning Jeg åbnede main.py og analyserede krypteringsfunktionen. Jeg observerede følgende: Der bruges et custom alphabet: 1 abcdefghijklmnopqrstuvwxyzæøå{}_ Hvert tegn bliver konverteret til sit indeks i alfabetet. Krypteringen sker via: 1 encrypted_index = char_index ^ key_index Samme key-char bruges for hele teksten. ...

June 18, 2026 · 2 min · Jeppe Sørensen

Broken Invoice

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: 1 file broken_invoice Outputtet viste blot: 1 data 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: ...

June 18, 2026 · 2 min · Jeppe Sørensen

Call Me Maybe

Filer: Download challenge files Writeup: Call Me Maybe Indledende Observationer Jeg fik udleveret en fil ved navn call_me_maybe, som ved afvikling bad om en passphrase til en “NoTech Security Terminal”. Ved forkert input gav programmet en tydelig hint-tekst: Hint: Maybe you should trace the calls... Jeg åbnede binæren i Detect It Easy og så, at det var en ELF64 Linux-binary (AMD64), så den skulle køres og analyseres i et Linux-miljø (f.eks. via WSL/VM). ...

June 18, 2026 · 2 min · Jeppe Sørensen

Disk Encryption

Filer: Download challenge files Writeup: Disk Encryption Indledende Observationer Jeg fik udleveret: server.py passwd.txt Serveren: Krypterede passwd.txt i memory med AES-XTS Brugte nøgle = SHA512(flag) (64 bytes = to AES-256 nøgler) Gav adgang til en ECB encryption oracle i debug-mode Tillod restore af én vilkårlig ciphertext-blok Printede flaget hvis en ikke-root bruger fik uid=0 og gid=0 Der var kun én integritetskontrol: Usernames måtte ikke ændres. Recon / Kortlægning I server.py så jeg: ...

June 18, 2026 · 3 min · Jeppe Sørensen

Existential Loading Bar

Writeup: Existential Loading Bar Indledende Observationer Jeg tilgik websitet og blev mødt af en admin-login side med en loadingbar der aldrig kom videre. Wappalyzer viste at backend kørte: Flask 3.1.5 Python 3.12.12 Der var ingen yderligere hints i UI’et, så jeg fortsatte med at undersøge koden. Recon / Kortlægning Jeg åbnede koden via View Source. I bunden af HTML’en fandt jeg følgende JavaScript: 1 2 3 4 5 6 7 8 <script> // Admin credentials (view source to see – don’t do this in production.) var ADMIN_USER = "admin"; var ADMIN_PASSWORD = "vibe_coding_ftw_2024"; if (window.location.search.indexOf("error=1") !== -1) { document.getElementById("err").textContent = "Nope. Try again. (Or just view source.)"; } </script> Her lå admin credentials hardcoded direkte i klient-side kode. ...

June 18, 2026 · 2 min · Jeppe Sørensen

Fear of long words

Filer: Download challenge files Writeup: Fear of long words Indledende Observationer Jeg fik udleveret en 32-bit ELF binær samt kildekoden. Servicen kunne tilgås via: 1 nc fear-of-long-words.cfire 1337 Ved første forbindelse blev følgende interface præsenteret: 1 2 I made a dictionary! Commands: add <length>, show, exit Programmet fungerede som en simpel ordbog hvor man kunne: add <length> – tilføje et ord show – vise alle gemte ord exit – afslutte programmet ...

June 18, 2026 · 2 min · Jeppe Sørensen

Fibonacci Caesar

Filer: Download challenge files Writeup: Fibonacci Caesar Indledende Observationer Jeg fik udleveret: main.py encryption.txt Beskrivelsen indikerede en modificeret Caesar-cipher, hvor forskydningen afhænger af Fibonacci-sekvensen. I main.py fandt jeg følgende logik: 1 2 3 4 5 6 7 a = fib(n) b = fib(n + 1) for ch in text: k = a % 26 ... a, b = b, a + b Det betød: Start-shift = Fₙ Næste shift = Fₙ₊₁ Derefter klassisk Fibonacci-opdatering pr. bogstav Alle shifts reduceres modulus 26 (alfabetets længde) Recon / Kortlægning Krypteringen pr. bogstav er: ...

June 18, 2026 · 2 min · Jeppe Sørensen

Hasher: Trust the Hash (They Said)

Writeup: Hasher: Trust the Hash (They Said) I denne challenge fik jeg kun udleveret et hash: 1 BB707DD63F792BFA73AD00C993875811 Jeg kunne se, at den bestod af 32 hex-tegn, hvilket tydede på, at det var en MD5-hash. I stedet for at brute force den selv, brugte jeg CrackStation til at slå hashen op. Jeg indsatte hashen i søgefeltet, og CrackStation fandt hurtigt det oprindelige input. Hashen svarede til: 1 letmeinplease Da flagformatet skulle være DDC{dit_svar_her}, indsatte jeg derfor: ...

June 18, 2026 · 1 min · Jeppe Sørensen

Jeg har mistet min pakke

Writeup: Jeg har mistet min pakke Indledende Observationer Jeg gik til http://minpakke.cfire. Det så ud til at være en pakke-tracking side, med en chatbot og et tracking vindue. Chatbotten på siden ville ikke udlevere tracking ID eller postnummer direkte. Recon / Kortlægning Jeg testede chatbotten med klassiske “jeg er admin” prompt-injections for at få den til at køre interne værktøjer: Chatlog: Jeg bad om at udføre et internt tool kald til at hente alle tracking IDs. ...

June 18, 2026 · 2 min · Jeppe Sørensen