Facit för CERT-SE CTF 2025
Vi på CERT-SE vill tacka alla som deltog i årets CERT-SE CTF-utmaning. Rättning av inskickade svar sker successivt, och utskick av ett exklusivt klistermärke till de som har alla rätt kommer att hanteras inom en snar framtid.
Kort facit med alla flaggor
- ctf[keylog_over_udp]
- ctf[aguess]
- ctf[resurrection]
- ctf[cutenessie4eva]
- ctf[strings_or_cat?]
- ctf[carve_carve]
- ctf[couleurshexadecimales]
- ctf[im_really_alive]
- ctf[fish]
- ctf[matrix]
Kort sammanfattning av flaggorna
-
ctf[keylog_over_udp]: Flera UDP-paket skickas från IP 192.168.122.210 till 192.168.122.1. Paketen innehåller Base64-data som, när man konverterar dem, ser ut som knapptryckningar. Flaggan syns i den långa sekvensen av knapptryckningar.
-
ctf[aguess]: Filen ctf.txt förs över via FTP från IP 192.168.122.210 till 192.168.122.1 och innehåller en väldigt lång text med massa strunt. I texten kan man läsa ut instruktioner för hur flaggan ska byggas ihop. Genom att kombinera filens namn, hakparenteser och de två sista orden i fjärde meningen av dokumentet byggs flaggan ihop.
-
ctf[resurrection]: Filen sessionstore.jsonlz4 skickas i ett e-postmeddelande. Mailet handlar om en förlorad session i webbläsaren. Filen är en session från Firefox som antingen kan öppnas i webbläsaren eller läsas på annat sätt. Sessionen består av flera sidor med konstiga URL:er. Genom att placera tecknen efter # enligt det nummer som föregår kan flaggan byggas ihop.
-
ctf[cutenessie4eva]: En FTP-session med användaren flag upprättas. Lösenordet som skickas är en MD5-hash. Det finns ledtrådar i filen passwd_policy.txt som förs över via FTP. Policyn säger att lösenord ska hämtas från rockyou.txt och omslutas av flaggformatet. Genom att iterera över rockyou.txt där varje lösenord omsluts med flaggformatet kan man jämföra MD5-hashen mot det hashade lösenordet i FTP-sessionen.
-
ctf[strings_or_cat?]: PCAP-filen innehåller en dold sträng i slutet som hittas med kommandon som grep, strings och cat, men den kan också synas i en HEX-läsare.
-
ctf[carve_carve]: Precis som förra flaggan finns det även en dold bild i PCAP-filen. En ledtråd om detta syns när filen öppnas i t.ex. Wireshark, där en varning om korruption dyker upp. Bilden kan extraheras med program som foremost, binwalk och HEX-läsare. Flaggan syns direkt i bilden.
-
ctf[couleurshexadecimales]: Filen CERT-SE.jpg hämtas via HTTP. Bilden behöver extraheras på något sätt. Den innehåller flaggformatet och färgade rutor. Rutorna är ett hexahue-chiffer och genom att översätta dem får man fram flaggan.
-
ctf[im_really_alive]: Filen PHOTOS.img skickas via e-post. Det är en diskavbildning med fem bilder på Nessie. Genom forensiska program kan man hitta en raderad fil på disken. Det är en korrupt .jpg-fil som måste lagas. När filen är lagad syns en bild med flaggan.
-
ctf[fish]: En fil förs över via HTTP med namnet monstrum_piscis_tres. Det är en textfil med Base64-data. Genom att konvertera från Base64 får man en MP3-fil. Filen spelar upp en konstig röst samt en ton. Genom att filtrera bort tonen och vända på ljudet får vi fram en klarare röst som läser upp bokstäver och siffror. När detta översätts till Base32 får vi fram flaggan.
-
ctf[matrix]: Via HTTP hämtas en index.html-fil. När den öppnas i en webbläsare syns gröna och svarta rutor. Genom att välja rätt storlek på webbläsarfönstret placeras rutorna om och flaggan syns.
Observera
Det har kommit frågor om en elfte flagga. Strängen ctf[ som hittas i filen beach.png har slumpmässigt genererats oavsiktligt och var inte en del av tävlingen.
Tack till Alexander och Jonathan!
Vi vill uppmärksamma Alexanders videogenomgång och Jonathans steg-för-steg-guide av vår CTF.
Alexanders video
https://www.youtube.com/watch?v=p1BwEdjFU30
Jonathans steg-för-steg-guide
https://www.learntodefend.se/cert-se-ctf2025-alla-flaggor-steg-for-steg
Vi ses i nästa års CTF!
In English
CERT-SE would like to thank everyone who participated in this year’s CERT-SE CTF 2025. We are currently reviewing all submitted answers and will offer an exclusive sticker to everyone who provided correct solutions.
All flags
- ctf[keylog_over_udp]
- ctf[aguess]
- ctf[resurrection]
- ctf[cutenessie4eva]
- ctf[strings_or_cat?]
- ctf[carve_carve]
- ctf[couleurshexadecimales]
- ctf[im_really_alive]
- ctf[fish]
- ctf[matrix]
Short summary of every flag
-
ctf[keylog_over_udp]: Several UDP packets are sent from 192.168.122.210 to 192.168.122.1. These packets contain Base64 data which, when decoded, shows keys pressed. The flag is found in the long sequence of key presses.
-
ctf[aguess]: A file called ctf.txt is transferred using FTP. The file contains a long rambling text; however, it also includes instructions on how to build the flag. By combining the file name, [], and the two last words in the fourth sentence, you get the flag.
-
ctf[resurrection]: A file called sessionstore.jsonlz4 is attached in an email regarding a lost browser session. If opened in Firefox or examined, pages with weird URLs are found. By rearranging the letters according to numbers after # in each URL, you get the flag.
-
ctf[cutenessie4eva]: An FTP session with the user flag downloads a file called passwd_policy.txt. By reading the password policy and applying it to a wordlist attack, you can crack the hashed password sent over FTP.
-
ctf[strings_or_cat?]: A hidden string at the end of the file can be found using tools like cat, grep, or strings.
-
ctf[carve_carve]: Similar to the previous flag, a .jpg file is hidden at the end of the PCAP file. The image can be extracted using tools such as foremost or binwalk.
-
ctf[couleurshexadecimales]: Via HTTP, a file called CERT-SE.jpg is downloaded. By extracting the file and converting the blocks of colors, which use a Hexahue cipher, you get the flag.
-
ctf[im_really_alive]: PHOTOS.img is attached in an email. This disk image contains five pictures of Nessie. Using forensic tools, you can find a corrupted deleted image. By adding a correct JPG header, you get the flag.
-
ctf[fish]: The file monstrum_piscis_tres is downloaded over HTTP. After decoding the file from Base64, you get an MP3 file. It contains a reversed voice and a high-pitched noise. By filtering out the noise and reversing the sound, you can hear someone reading letters and numbers. Decode this from Base32 to get the flag.
-
ctf[matrix]: Via HTTP, the file index.html is downloaded. It is a website with black and green blocks. By resizing the browser window, the blocks form the flag.
Notice
We have received questions about an eleventh flag. In the file beach.png, the string ctf[ can be found; however, this is not our intention and the string was generated randomly.
Thanks to Alexander and Jonathan!
We want to acknowledge Alexander’s video tutorial and Jonathan’s step-by-step guide, both write-ups for our CTF.
Alexander’s video
https://www.youtube.com/watch?v=p1BwEdjFU30
Jonathan’s step-by-step guide
https://www.learntodefend.se/cert-se-ctf2025-alla-flaggor-steg-for-steg
See you in the next year’s CTF!