f l a g { F e s t l i c h e _ S t i m m u n g }

Advent-Challenges

Die Advents-Challenge 2024 ist beendet. Vielen Dank für Eure Teilnahme! Die Lösungen sind jetzt verfügbar.

Willkommen

0

Einfach
Bin

1

Einfach
Morsecode

2

Mittel
HTML

3

Einfach
Denkmal nach

4

Mittel
Lustige Challenge

5

Einfach
Le chiffre indéchiffrable

6

Mittel
Die Post geht ab

7

Schwer
H4x0r

8

Einfach
Dokument

9

Mittel
Verhext

10

Einfach
RGB

11

Mittel
Offensichtlich

12

Einfach
SVG

13

Mittel
Kaputtes Bild

14

Schwer
GIF

15

Einfach
HTTP

16

Mittel
Deko

17

Einfach
Verwechslung

18

Mittel
Schlittenrennen

19

Schwer
Versteckt

20

Einfach
Spurensuche

21

Mittel
Adventskranz

22

Einfach
Archiv

23

Mittel
Regex

24

Einfach
Encrypted

25

Extrem

Willkommen

Einfach

Willkommen beim Hacking-Adventskalender.
Ab dem 01.12.2024 wirst Du hier bis zu 24 einzigartige Challenges finden.

Bei allen 24 Aufgaben muss ein Lösungswort gefunden werden. Dieses ist in der Beschreibung oder in angehängten Dateien versteckt.
Hier ein Beispiel: "gmbh{Fjotujfh}" ist als Angabe gegeben. Was nun? Zuerst einmal: lasst euch nicht von gmbh verwirren. Die angegebene Zeichenkette sieht schon ähnlich zu flag{...} aus. Tatsächlich wurde hier die Cäsar-Verschlüsselung angewandt und alles um X Buchstaben verschoben. Um von "flag" auf "gmbh" zu kommen braucht es eine Verschiebung um eins (X=1) ('g' liegt im Alphabet eins neben 'f').
Wie lautet demnach die Flag? (Für diese Aufgabe gibt es keine Punkte.)

Lösung (zum Anzeigen hier klicken)

Um die Flag zu erhalten, muss für jeden Buchstabe der vorherige Buchstabe im Alphabet gefunden werden.
  • F → E
  • j → i
  • o → n
  • t → s
  • u → t
  • j → i
  • f → e
  • h → g
Also ist die Flag flag{Einstieg}.

Bin

Einfach

In dieser Reihe von Nullen und Einsen ist die Flag gespeichert:

01100110011011000110000101100111011110110110111101101110011011000111100100110001001100000101010001111001011100000110010101110011010011110110011001010000011001010110111101110000011011000110010101111101

Lösung (zum Anzeigen hier klicken)

Bei dem gegebenen String handelt es sich um die Binärdarstellung eines ASCII-Texts. Wenn man sie in Textform umwandelt, kommt man auf die Flag: flag{only10TypesOfPeople}

Morsecode

Mittel

Hinweis: Die geschweiften Klammern musst du selbst hinzufügen, da sie in Morsecode nicht dargestellt werden können.

Lösung (zum Anzeigen hier klicken)

Nach dem Dekodieren des Morsecodes erhält man die Flag: flag{Tasten}

HTML

Einfach

Ich wollte eigentlich noch etwas zu dieser Challenge sagen...

Lösung (zum Anzeigen hier klicken)

Die Flag kann man finden, indem man mit den Browser-Devtools den Quellcode der Seite untersucht. Wenn man auf die Beschreibung dieser Challenge rechtsklickt, öffnet sich das Kontextmenü. Darin muss der Punkt Untersuchen ausgewählt werden. Dann wird der Quellcode angezeigt und man kann erkennen, dass sich die Flag in einem HTML-Kommentar befindet. Sie lautet flag{Kommentar}.

Denkmal nach

Mittel

Was ist hier zu finden?

52.40749670001323, 16.91919487679033

Lösung (zum Anzeigen hier klicken)

Eine Möglichkeit, herauszufinden, was sich bei den gegebenen Koordinaten befindet, ist, sie z.B. bei Google Maps einzugeben und das Panel links zu schließen. Dann erscheint an dem Punkt auf der Karte ein Eintrag mit der Beschreibung "Kryptologen-Denkmal in Posen". Alternativ kann man über Street View das Denkmal von "Marian Rejewski" erkennen. Im passenden Wikipedia-Artikel wird das Kryptologen-Denkmal erwähnt. Die Flag lautet flag{Kryptologen-Denkmal}.

Lustige Challenge

Einfach

Lösung (zum Anzeigen hier klicken)

Bei dieser Challenge ist eine Textdatei, welche einige Emojis enthält, gegeben. Es kommen nur zwei verschiedene Emojis vor, die sich allerdings stark ähneln. Um diese besser unterscheiden zu können, kann man eines der Emojis überall durch ein Emoji mit komplett unterschiedlichem Aussehen ersetzen. Durch langsames Anpassen der Breite des Editorfensters wird die Flag sichtbar, sobald alle Emojis genau auf sieben Zeilen passen: flag{Emoji-Art}.

Le chiffre indéchiffrable

Mittel

Die in diesem Brief verwendete Verschlüsselung galt vor einigen Jahrhunderten als unentzifferbar. Schaffst Du es, den Schlüssel zu finden und das Geheimnis der Flag zu lüften?

Pqhj dqezofe Vxyef rzd Zbdrwk,

piw Cxay imulbf fdxs{bjbmkaks-saufewkfh-ubztmok-camtejp-gsaks-kflin-himifqqxl-xftszws}.

Eff fjbgnviuczbz Gjrqskbz,
Embd Avsqnlp-Tauhuny-Qqae

Lösung (zum Anzeigen hier klicken)

Der gegebene Text wurde mit der sogenannten Vigenère-Chiffre verschlüsselt. Diese wurde im 16. Jahrhundert vom französischen Kryptograph Blaise de Vigenère erfunden. Sie funktioniert ähnlich wie die Cäsar-Verschlüsselung, der Key besteht allerdings aus mehreren Buchstaben. Beim Verschlüsseln wird jeder Plaintext-Buchstabe um so viele Zeichen im Alphabet verschoben, wie der zugehörige Buchstabe im Key angibt. Sobald man beim Ende des Schlüssels angelangt ist, fängt man wieder beim ersten Buchstaben des Schlüssels an. Sofern ein kurzer Schlüssel verwendet wurde, lässt sich diese Chiffre leicht knacken. Anhand der Groß- und Kleinschreibung des gegebenen Ciphertexts kann man erkennen, dass der Brief mit der förmlichen Anrede "Sehr geehrte Damen und Herren" anfängt und mit der Grußformel "Mit freundlichen Grüßen, ..." aufhört. Deshalb können wir eine Known-Plaintext-Attack durchführen. Um den Key herauszufinden, fängt man beim ersten Wort ("Sehr") an:
  • S + 23 = P
  • e + 12 = q
  • h + 0 = h
  • r + 18 = j
Beim zweiten Wort ("geehrte") sind die notwendigen Verschiebungen 23, 12, 0, 18, 23, 12, 0. Daran ist ersichtlich, dass der Key aus den vier Zeichen 23, 12, 0, 8 (XMAS) besteht. Damit kann man die gesamte Botschaft entschlüsseln und die Flag herausfinden: flag{breaking-sixteenth-century-ciphers-using-known-plaintext-attacks}

Die Post geht ab

Schwer

Du kannst die Lösung einfach vom Server abfragen.
Frage dazu einfach /advents-hacking/challenge7.php mit passwort=geheim als Parameter an und Du bekommst die Lösung zurückgegeben ;).

Lösung (zum Anzeigen hier klicken)

In dieser Aufgabe geht es offensichtlich darum, einen HTTP-Request an die gegebene URL zu schicken. Als Parameter soll passwort=geheim mitgeschickt werden. Parameter treten bei HTTP vor allem im Zusammenhang mit Formularen auf. Der Titel weist darauf hin, dass es ein POST-Request sein soll. Es gibt zwei Möglichkeiten, diesen Request abzuschicken.
Eine Möglichkeit ist, das HTML der Website zu bearbeiten, ein Formular einzufügen und dieses abzuschicken:
<form action="/advents-hacking/challenge7.php" method="POST">
  <input type="text" name="passwort" value="geheim">
  <input type="submit">
</form>

Alternativ kann man den Request mittels fetch in der JavaScript-Konsole senden:
fetch("/advents-hacking/challenge7.php", {
  method: "POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  body: "passwort=geheim"
}).then(response => response.text())
  .then(response => console.log(response));

Bei beiden Möglichkeiten enthält die Antwort vom Server die Flag: flag{F0rm4l3r_HTTP_P0ST_R3qu3st}

H4x0r

Einfach

D45 1o35un95wo2t 14u737: f149{5p24ch3-d32-31173}.

Lösung (zum Anzeigen hier klicken)

Im gegebenen Text wurden manche Buchstaben durch ähnlich aussehende Ziffern ersetzt. Diese Schreibweise ist in Hackerkreisen sehr bekannt und wird als Leetspeak bezeichnet. Wenn man die Ziffern im Text durch die passenden Buchstaben ersetzt, kommt man auf die Flag (Groß- und Kleinschreibung kann hier beliebig sein): flag{Sprache-der-Elite}

Dokument

Mittel

Findest du in diesem Dokument die versteckte Flag?
(Die Challenge ist sowohl mit Microsoft Word als auch mit LibreOffice Writer lösbar.)

Lösung (zum Anzeigen hier klicken)

In diesem unscheinbaren Word-Dokument befindet sich lediglich ein Bild, welches den Text "Wo ist die Flag?" enthält. Bei genauerer Betrachtung dieses Bildes kann man feststellen, dass es in Word zugeschnitten wurde (Rechtsklick, Zuschneiden) und sich die Flag oben außerhalb des sichtbaren Bereichs befindet: flag{think_outside_the_box}

Verhext

Einfach

Die Wörter der Lösung sind verhext und anschließend als Dezimalzahlen gespeichert worden.
Sie müssen entzaubert und mit _ getrennt angegeben werden.
Beispiel: flag{eine_tolle_Wortfolge}

53733 343 3358 786462 61865

Lösung (zum Anzeigen hier klicken)

Wenn man sie zu Hexadezimalzahlen konvertiert, lauten die fünf gegebenen Dezimalzahlen wiefolgt: D1E5 157 D1E C001E F1A9. Dann lässt sich die Flag ablesen (Groß- und Kleinschreibung kann hier beliebig sein): flag{dies_ist_die_coole_Flag}.

RGB

Mittel

Ich kann auf meinem BiLdsChirm schon fast Die Flag erkennen. Sie ist nur etwas gestreckt...

Lösung (zum Anzeigen hier klicken)

Bei LCD-Bildschirmen kann man die Flag mit einer Lupe o.ä. direkt ablesen, wenn man das gegebene Bild so skaliert, dass jeder Pixel im Bild auf einem Pixel des Bildschirms angezeigt wird. Auf anderen Bildschirmen ist dies unter Umständen nicht direkt möglich. In diesem Fall kann man auch das Layout der LCD-Pixel in einem Zeichenprogramm nachbauen (ein Pixel ist in ein rotes, ein grünes und ein blaues Drittel aufgeteilt) und anhand der Farben der Pixel im Bild die passenden Drittel ausfüllen. Das könnte dann z.B. so aussehen:
Die Flag lautet also flag{subpixel-art}.

Offensichtlich

Einfach

Vielleicht ist die Flag gerade sichtbar...

Lösung (zum Anzeigen hier klicken)

Die Flag steht im Titel der Website (sichtbar im Tab oder im Namen des Browserfensters) und kann direkt abgelesen werden: flag{GenauHinschauen}.

SVG

Mittel

Findest Du die Flag in diesem SVG-Bild?

Lösung (zum Anzeigen hier klicken)

Die Flag befindet sich außerhalb des sichtbaren Bereichs im SVG-Bild. Um sie vollständig sehen zu können, kann man das SVG entweder mit einem Programm wie Inkscape öffnen oder es im Browser anzeigen und die im Root-Element angegebenen Dimensionen (Attribut viewBox) vergrößern.

Kaputtes Bild

Schwer

Dieses Bild ist in zwei Teile zerbrochen. Kannst Du sie zusammenfügen?

Lösung (zum Anzeigen hier klicken)

Wenn man die erste Datei öffnet, ist bereits ein Teil der Flag sichtbar. Um die gesamte Flag anzeigen zu können, muss man beide Teildateien aneinanderhängen. Dafür können z.B. folgende Terminalbefehle verwendet werden:
  • Windows: type Teil1.png Teil2.png > Ausgabe.png
  • macOS/Linux: cat Teil1.png Teil2.png > Ausgabe.png
Die Flag lautet flag{wieder_zusammengebastelt}.

GIF

Einfach

Ich habe dieses GIF gefunden. Aus irgendeinem Grund scheint es nicht zu laden. Kannst Du mir helfen?

Lösung (zum Anzeigen hier klicken)

Das gegebene GIF hat eine sehr hohe Dauer pro angezeigtem Frame. Mit einem Programm wie z.B. GIMP kann man alle Frames anzeigen. Auf dem letzten Frame ist die Flag sichtbar: flag{Langeweile}

HTTP

Mittel

Die Lösung für das heutige Adventskalender-Türchen findest Du in einem HTTP-Header-Feld.

Lösung (zum Anzeigen hier klicken)

Der Browser verwendet das HTTP-Protokoll zur Kommunikation mit Websites. HTTP-Header-Felder enthalten üblicherweise Metadaten über die Anfrage selbst (Request Headers) oder über das von einem Server angefragte Dokument (Response Headers). Die Flag für diese Aufgabe kann man in den Response Headern finden. Diese werden z.B. in den Browser-Devtools angezeigt (Netzwerk-Tab auswählen, Seite neu laden, obersten Eintrag anklicken, rechts Response/Antwort o.ä. auswählen). Darin ist auch die Flag ersichtlich: flag{Versteckte_Antwort}

Deko

Einfach

Hoffentlich haben Dir die Challenges bisher gut gefallen. Hier nun eine eher einfache.
Mir ist aufgefallen, dass sich das Rentier in der rechten oberen Ecke sehr alleine fühlt.
Deine Aufgabe ist nun: Aktiviere den Spaß-Modus auf der Website, indem Du im Localstorage einen Eintrag fun mit dem Wert enabled erstellst und die Seite neu lädst. Dann ist die Flag nicht zu übersehen.

Lösung (zum Anzeigen hier klicken)

Auch bei dieser Challenge sind die Browser-Devtools gefragt: Im Storage-Tab gibt es links im Baum eine Sektion für den Local Storage. Wenn man dort den in der Aufgabe beschriebenen Eintrag anlegt und die Seite neu lädt, ist die Flag zwischen den Dekorationen in der Mitte des Bildschirms erkenntlich: flag{Festliche_Stimmung}

Verwechslung

Mittel

Oh nein! Hier scheint eine Verwechslung passiert zu sein. Kannst Du die Bedeutung der festlichen Worte entschlüsseln und die Flag herausfinden?

DEKORATIONschneemannwunschzettelwichteln geschenkschneemannschneemannwunschzettelwichtelnlichterketteschneemann HEILIGABENDschneechriststollenschneemannadventskranz nikolausadventskranzheiligabend WUNSCHZETTELschneemannwichtelnwichtelnschneemannadventskranz,

heiligabendbescherungschneemann KRIPPErentierschneegeschenk rentierschneenikolauslichterketteschneemannlichterkette kripperentierschneegeschenk{KRIPPEwichtelnwinterschneemannwunschzettelrentierbescherungsternwunschzettelschneemann_LEBKUCHENschneemannbescherungwunschzetteladventskranzschneesternwunschzettellichterkettedekorationkinderpunschschneemannbescherunglichterkette}.

CHRISTSTOLLENbescherunglichterkette krippewichtelnschneemannnikolausadventskranzheiligabendrentierbescherungsternwunschzettelschneemannadventskranz GESCHENKwichtelnnikolausschneemanndekorationdekorationschneemannadventskranz,
SCHNEEMANNnikolausschneemannwichteln SCHNEEheiligabendadventskalenderschneemannadventskranzlichterkettedekoration-WUNSCHZETTELschneesternchristkindbescherungadventskranzgeschenk-LICHTERKETTEschneemannschneechriststollen

Lösung (zum Anzeigen hier klicken)

Der gegebene Text wurde mit einer Substitution-Cipher verschlüsselt. Dabei wurden aber nicht bestimmte Buchstaben durch andere ersetzt, sondern durch ganze Wörter. Anhand der Groß- und Kleinschreibung lässt sich - ähnlich wie bei einer vorherigen Challenge - die förmliche Anrede am Anfang und die Grußformel am Schluss erkennen. Schritt für Schritt können dann fast alle Wörter durch Buchstaben ersetzt werden, bis die Flag lesbar ist: flag{Froehliche_Weihnachtszeit}

Schlittenrennen

Schwer

Der Weihnachtsmann ist beim Ausliefern der Geschenke in Zeitnot geraten. Kannst Du ihm helfen, den Wald rechtzeitig zu durchqueren? Dazu musst Du einen Score von 10000 erreichen.

Für das Bearbeiten dieser Challenge musst Du eingeloggt sein.

Lösung (zum Anzeigen hier klicken)

Bei dieser Aufgabe lohnt sich ein Blick in den Quellcode des Spiels (Datei game/game.js). Es ist sinnvoll, sich zuerst damit zu beschäftigen, wie das Spiel im Browser mit dem Server kommuniziert: Beim Spielstart wird ein Seed vom Server abgerufen, anhand dessen das Level (Anordnung der Bäume) generiert wird. Beim Spielende wird ein Request an den Server geschickt, welcher für jeden Zeitpunkt die gewählte Spur angibt. Der Server akzeptiert die Anfrage nicht, wenn zu viele oder zu wenige Eingaben gesendet werden oder eine Kollision mit einem Baum aufgetreten ist. Da das Spiel zu schnell läuft, um es selbst spielen zu können, muss man ein kleines Programm schreiben, welches einen Request schickt, um das Spiel auf dem Server zu starten (vgl. Funktion startGame), das Level und pro x-Koordinate eine valide Position berechnet (vgl. Funktion getRandomLane) und diese abschließend als Inputs sendet (vgl. Funktion submit). In der Antwort auf den zweiten Request ist die Flag enthalten: flag{54eaeb1c219b0ab6}

Versteckt

Einfach

Ein Hacker hat die Flag in diesem PDF vor uns versteckt.
Kannst Du sie finden?

Lösung (zum Anzeigen hier klicken)

Die Flag befindet sich im PDF hinter dem Bild. Man erhält die Flag, indem man z.B. alles markiert, kopiert und in einem anderen Dokument einfügt: flag{versteckte_flag}

Spurensuche

Mittel

Es wurde der Computer eines bösen Hackers beschlagnahmt. Deine Aufgabe ist es nun, eine geheime Flag auf dem Computer zu finden.
Wir sind uns sicher, dass er sich die Flag mithilfe eines Terminal-Commands kurz vor der Beschlagnahmung ausgeben lassen hat.
Das Linux-Dateisystem des Hackers kannst Du im Terminal unten inspizieren.

Um die Shell zu verwenden, musst du eingeloggt sein.

Lösung (zum Anzeigen hier klicken)

Bei Eingabe des Befehls help werden einige mögliche Shell-Befehle aufgelistet. Wenn man die Hilfe zu dem ls-Befehl abruft (ls --help), welcher für das Auflisten der Dateien im aktuellen Verzeichnis verwendet werden kann, erfährt man über den Parameter -a, bei dessen Angabe auch versteckte Dateien bzw. Ordner angezeigt werden. Deren Namen fangen auf Unix-ähnlichen Systemen üblicherweise mit einem Punkt an. In der Ausgabe des Befehl ls -a ist u.a. die Datei .bash_history sichtbar.

Ein guter Anlaufpunkt, um auf einem Unix-ähnlichen System nach Spuren zu suchen, ist die Shell-History (in diesem Fall in der Datei .bash_history). Um diese auszulesen eignet sich der Befehl cat .bash_history. Darin ist erkenntlich, dass der Hacker das Shell-Skript programm42.sh im Ordner Documents/.geheim ausgeführt hat. Mit folgenden Befehlen kann man das Programm ausführen und sich die Flag ausgeben lassen:
  • cd Documents
  • cd .geheim
  • ./programm42.sh oder cat programm42.sh
Die Flag lautet flag{geheimes_skript}.

Adventskranz

Einfach

Dieser digitale Adventskranz scheint "verbuggt" zu sein. Wir haben Probleme damit, die Kerzen anzuzünden. Kannst Du uns helfen?

Lösung (zum Anzeigen hier klicken)

Um Challenge zu lösen, müssen alle vier Kerzen angezündet sein bzw. alle vier Checkboxen angekreuzt sein. Man kann z.B. in den Devtools auf das HTML-Element der letzten nicht angekreuzten Checkbox rechtsklicken, Use in Console o.ä. wählen und in der Konsole das Attribut checked auf true setzen. Mit einem Klick auf Los ist die Challenge gelöst.

Archiv

Mittel

Kannst Du die im ZIP-Archiv versteckte Flag finden?

Lösung (zum Anzeigen hier klicken)

Die Flag befindet sich nicht direkt innerhalb des ZIP-Archivs. Mit einem üblichen Archivierungsprogramm kann man sie nicht direkt finden. In der gegebenen Datei ist hinter dem ZIP-Archiv noch ein PNG-Bild angehängt. Dies kann man z.B. mit dem Tool binwalk herausfinden. Wenn man den ZIP-Teil aus der Datei entfernt bzw. das PNG-Bild in eine eigene Datei extrahiert, kann man die Flag aus dem Bild ablesen: flag{bild_in_zip}

Regex

Einfach

Das Advents-Hacking-Team wünscht Euch

flag{[Ff][r2][o0]h[e3][\s\-_][Ww][e3][i1]hn(8|[a4]ch[t7])[e3]n}

Lösung (zum Anzeigen hier klicken)

Für diese Challenge gibt es mehrere mögliche Lösungen. Der gegebene Regex matcht alle Flags mit dem Text Frohe Weihnachten in verschiedenen Leetspeak-Varianten. Gültige Flags sind u.a.:
  • flag{Frohe Weihnachten}
  • flag{f20h3-w31hn4ch73n}
  • flag{Frohe_Weihn8en}

Encrypted

Extrem

Diese Datei wurde mit einer einfachen Chiffre verschlüsselt. Deine Aufgabe ist es, anhand vom gegebenen Ciphertext den Key zu ermitteln und die Datei damit zu entschlüsseln.
Hinweise:

  • Für das Lösen dieser Aufgabe werden keine Punkte vergeben.
  • Für diese Aufgabe wird keine Lösung veröffentlicht.
  • Die ursprüngliche Datei besteht zum Teil auch aus nicht druckbaren ASCII-Zeichen.
  • Versuche, Dich an bestimmten in der Datei auftretenden Strukturen zu orientieren.