Die Advents-Challenge 2025 ist beendet. Vielen Dank für eure Teilnahme! Die Lösungen sind ab jetzt verfügbar.
Einstieg
0
Beispiel
0
HTML 1
1
HTML
Kodierung
2
CSS 1
3
CSS
HTML 2
Bonus
HTML
Nachricht
4
Crypto
Formular
5
HTML
CSS 2
Bonus
CSS
Was bin ich?
6
Archiv
7
Spiel
8
JS
Requests
9
HTTP
Steganographie
10
fetching Fun
11
HTTP
Link
12
HTML
Requests 2
Bonus
HTTP
Verhext
13
Web Security
14
Link 2
Bonus
HTML
Repository
15
Reverse Engineering 1
Bonus
Vertauscht
16
Crypto
Bestellung
17
RSA
18
Crypto
Im Museum
19
Logic Gates
20
Gelöscht
Bonus
Assembly
21
Java
22
Reverse Engineering 2
Bonus
Shell
23
Weihnachten
24
Einstieg
Willkommen beim Hacking-Adventskalender 2025.
Ab dem 01.12.2025 wirst du hier bis Weihnachten jeden Tag eine neue einzigartige Challenge finden.
Bei jeder Challenge gibt es etwas Neues über das Internet, den Aufbau von Webseiten, Computer und vieles mehr zu erfahren.
Bei allen der über 24 Aufgaben muss zudem ein Lösungswort gefunden werden. Dieses Lösungswort ist immer im Format 'flag{Lösung}' abzugeben.
Die Aufgaben sind an Schüler und für an Informatik Interessierte gerichtet und sollten ab der 8. Klasse bearbeitet werden können.
Für besonders Interessierte gibt es an manchen Tagen schwere optionale Bonusaufgaben.
Eine geeignete Google-Suche kann oft weiterhelfen :).
Auch KI kann oft weiterhelfen. Versuche jedoch die Schritte nachzuvollziehen, damit du bei den Aufgaben etwas lernen kannst oder lass dir von der KI nur Tipps geben.
Besondere Informatikkenntnisse sind nicht erforderlich.
Beispielaufgabe:
Hier ist die Flag für Dich. Das Lösungswort ist jedoch noch nicht sichtbar...
(Für diese Aufgabe erhältst du keine Punkte.)
Ab dem 01.12.2025 wirst du hier bis Weihnachten jeden Tag eine neue einzigartige Challenge finden.
Bei jeder Challenge gibt es etwas Neues über das Internet, den Aufbau von Webseiten, Computer und vieles mehr zu erfahren.
Bei allen der über 24 Aufgaben muss zudem ein Lösungswort gefunden werden. Dieses Lösungswort ist immer im Format 'flag{Lösung}' abzugeben.
Die Aufgaben sind an Schüler und für an Informatik Interessierte gerichtet und sollten ab der 8. Klasse bearbeitet werden können.
Für besonders Interessierte gibt es an manchen Tagen schwere optionale Bonusaufgaben.
Eine geeignete Google-Suche kann oft weiterhelfen :).
Auch KI kann oft weiterhelfen. Versuche jedoch die Schritte nachzuvollziehen, damit du bei den Aufgaben etwas lernen kannst oder lass dir von der KI nur Tipps geben.
Besondere Informatikkenntnisse sind nicht erforderlich.
Beispielaufgabe:
Hier ist die Flag für Dich. Das Lösungswort ist jedoch noch nicht sichtbar...
flag{Hintergrundfarbe}(Für diese Aufgabe erhältst du keine Punkte.)
Beispiel
Beispielaufgabe aus dem letzten Jahr:
In dieser Reihe von Nullen und Einsen ist die Flag gespeichert:
(Für diese Aufgabe erhältst du keine Punkte.)
In dieser Reihe von Nullen und Einsen ist die Flag gespeichert:
01100110011011000110000101100111011110110110111101101110011011000111100100110001001100000101010001111001011100000110010101110011010011110110011001010000011001010110111101110000011011000110010101111101
(Für diese Aufgabe erhältst du keine Punkte.)
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} HTML 1
HTML
HTML definiert den Inhalt und dessen Layout in jeder Webseite.
Schau dir doch mal den HTML-Quelltext dieser Seite an:
Falls du auf
Für Interessierte:
HTML lernen (en): https://www.htmlforpeople.com/
Schau dir doch mal den HTML-Quelltext dieser Seite an:
Rechtsklick -> "Untersuchen (Q)"oderRechtsklick -> "Seitenquelltext anzeigen"
Falls du auf
"Untersuchen (Q)" geklickt hast, kannst du hier sogar den HTML-Code der Seite mit einem Doppelklick bearbeiten.Für Interessierte:
HTML lernen (en): https://www.htmlforpeople.com/
Lösung (zum Anzeigen hier klicken)
Nach Öffnen des Inspektors findet man direkt unter dem Text "Dort ist die Flag zu finden." ein verstecktes HTML-Div-Element mit dem Inhalt
flag{The_Inspector_Gadget}. Um eine Flag einzureichen, musst du eingeloggt sein.
Kodierung
Solch eine Zeichenkette, wie sie unten zu sehen ist, kommt im Internet häufiger vor - sei es zur Speicherung von Spielständen in Online-Games oder zur Enkodierung von bereits verschlüsselten Daten. Dennoch handelt es sich dabei nicht direkt um Verschlüsselung. Kannst du den Text dekodieren und die Flag offenbaren?
ZmxhZ3tiYXNlNjQtaXMtbjB0LWVuY3J5cHQxMG59Cg==
Lösung (zum Anzeigen hier klicken)
Bei der hier verwendeten Enkodierung handelt es sich um Base64. Dies kann man an den typischen
= am Ende der Zeichenkette erkennen, welche bei Base64-enkodierten Strings sehr häufig vorkommen. Nach dem Dekodieren erscheint die Lösung: flag{base64-is-n0t-encrypt10n} Um eine Flag einzureichen, musst du eingeloggt sein.
CSS 1
CSS
Oh nein! Die einzelnen Pixel des Pixel-Arts sind falsch angeordnet.
Ändere den style des div-Containers, in welchem sich die Pixel befinden, mithilfe des
Nachdem du das div auf der linken Seite im Inspektor angeklickt hast, kannst du nun auf der rechten Seite den style des Elements bearbeiten.
Du kannst hier die einzelnen CSS-Attribute ändern oder neue hinzufügen. Diese definieren die visuelle Darstellung von Elementen auf der Website.
Zur richtigen Anzeige des Pixel-Arts muss der Container eine Flexbox sein.
Danach muss noch der Umbruch der Flexbox-Elemente aktiviert werden.
Für Interessierte:
Mehr über Flexboxen lernen (en): https://flexboxfroggy.com/
Ändere den style des div-Containers, in welchem sich die Pixel befinden, mithilfe des
"Inspector"-Tabs der Dev-Tools:Nachdem du das div auf der linken Seite im Inspektor angeklickt hast, kannst du nun auf der rechten Seite den style des Elements bearbeiten.
Du kannst hier die einzelnen CSS-Attribute ändern oder neue hinzufügen. Diese definieren die visuelle Darstellung von Elementen auf der Website.
Zur richtigen Anzeige des Pixel-Arts muss der Container eine Flexbox sein.
Danach muss noch der Umbruch der Flexbox-Elemente aktiviert werden.
Für Interessierte:
Mehr über Flexboxen lernen (en): https://flexboxfroggy.com/
Lösung (zum Anzeigen hier klicken)
Die beiden zu ergänzenden CSS-Properties sind
display: flex; und flex-flow: row wrap;. Anschließend ist das Pixel-Art wieder richtig angeordnet und die Flag ist lesbar: flag{Weird-flex-but-ok}. Um eine Flag einzureichen, musst du eingeloggt sein.
HTML 2
HTML
Dies ist eine schwierige optionale Bonus-Challenge.
Für Bonus-Challenges erhältst du keine Punkte.
Die Flag
Für Bonus-Challenges erhältst du keine Punkte.
Die Flag
(
war im HTML-Code für diese Challenge versteckt.
flag{25dc052e}) Lösung (zum Anzeigen hier klicken)
Aus der Aufgabenstellung lässt sich herauslesen, dass die Flag dynamisch mit JavaScript aus dem Document Object Model entfernt wird, nachdem die Seite vollständig geladen ist. Um die Flag also sehen zu können, kann nicht der Inspektor verwendet werden, da dieser den aktuellen Zustand des HTML-Baums anzeigt. Im Netzwerk-Tab oder unter dem Menüpunkt "Seitenquelltext anzeigen" kann das HTML in der Form eingesehen werden, in der es vom Server geschickt wurde, also ohne durch JS bewirkte Veränderungen. Darin ist ein Skript zu sehen, welches ein Element mit der Flag entfernt. Die Flag lautete
flag{25dc052e}. Um eine Flag einzureichen, musst du eingeloggt sein.
Nachricht
Crypto
Unser römischer Freund hat für euch eine Nachricht hinterlassen:
Yvror Nqiragf-Unpxre,
vue unog qra Fpuyüffry "13" trshaqra. Fhcre!
Uvre vfg qvr Synt süe rhpu:
synt{sehrurIrefpuyhrffryhat}.
Yvror Teüßr,
Pnrfne
Mit dieser Scheibe sollte die Nachricht zu entschlüsseln sein.
vue unog qra Fpuyüffry "13" trshaqra. Fhcre!
Uvre vfg qvr Synt süe rhpu:
synt{sehrurIrefpuyhrffryhat}.
Yvror Teüßr,
Pnrfne
Lösung (zum Anzeigen hier klicken)
Bei der Cäsar-Chiffre wird jeder Buchstabe um eine bestimmte Anzahl an Stellen im Alphabet verschoben. Im Text ist eine Zahl erkennbar, die diese Anzahl angeben könnte: 13. Mithilfe der Scheibe kann jetzt jeder Buchstabe einem neuen zugeordnet werden. Zum Beispiel wird das Y am Anfang zu einem L. Nach Umwandlung der restlichen Zeichen ist die Nachricht entschlüsselt und die Flag erkennbar:
flag{frueheVerschluesselung}. Um eine Flag einzureichen, musst du eingeloggt sein.
Formular
HTML
Um die Flag zu bekommen, müssen beide Checkboxen angekreuzt sein.
Vielleicht kann dir die Challenge von Tag 1 (HTML 1) weiterhelfen.
Hinweis (zum Anzeigen anklicken): Wieso ist die zweite Box nicht anklickbar? (Was unterscheidet sie im HTML von der ersten?)
Vielleicht kann dir die Challenge von Tag 1 (HTML 1) weiterhelfen.
Hinweis (zum Anzeigen anklicken): Wieso ist die zweite Box nicht anklickbar? (Was unterscheidet sie im HTML von der ersten?)
Lösung (zum Anzeigen hier klicken)
Die zweite Checkbox unterscheidet sich insofern von der ersten, als dass sie das
disabled-HTML-Attribut gesetzt hat. Somit kann sie nicht angekreuzt werden. Nach dem Entfernen dieses Attributs lässt sie sich aber ankreuzen. Schließlich kann das Captcha gelöst werden, wodurch die Flag flag{schwieriges_captcha_gelöst} angezeigt wird. Um eine Flag einzureichen, musst du eingeloggt sein.
CSS 2
CSS
Dies ist eine schwierige optionale Bonus-Challenge.
Für Bonus-Challenges erhältst du keine Punkte.
Die Flag wird ein Buchstabe pro Zeile von oben nach unten gelesen:
Für Bonus-Challenges erhältst du keine Punkte.
Die Flag wird ein Buchstabe pro Zeile von oben nach unten gelesen:
Lösung (zum Anzeigen hier klicken)
Ähnlich wie bei der ersten CSS-Challenge muss zuerst das flex-Display aktiviert werden. Danach ist aber noch keine Flag sichtbar. Die Aufgabenstellung deutet an, dass die Flag von oben nach unten, also vertikal, angezeigt wird. Deshalb muss
flex-flow: column wrap; gesetzt werden. Bei der vorherigen Aufgabe mit horizontalem Text war die Breite limitiert, um einen Umbruch hervorzurufen. Deshalb muss jetzt die Höhe limitiert werden. Nach dem Setzen einer Höhe fällt zuerst auf, dass die einzelnen Pixel aktuell noch horizontal verteilt werden. Dies kann durch die Regel align-content: flex-start; behoben werden. Als nächstes muss nur noch die richtige Höhe gefunden werden. In den Dev-Tools kann man durch Ziehen der Maus die Höhe des Elements anpassen. Das korrekte Attribut für die Höhe ist height: 264px;. Schließlich ist die Flag sichtbar: flag{ko+tub+xelf+drieW}. Um eine Flag einzureichen, musst du eingeloggt sein.
Was bin ich?
Mit der angehängten Datei scheint etwas nicht zu stimmen. Schaffst du es, die Datei und deren Inhalt zu retten?
Lösung (zum Anzeigen hier klicken)
Die Endung der angehängten Datei sagt, dass es sich um eine Textdatei handelt. Beim Öffnen mit einem Texteditor werden aber sehr viele unlesbare Zeichen sichtbar. Ganz am Anfang aber ist der Text
PNG zu erkennen. Somit ist die Datei tatsächlich eine PNG-Bilddatei. Nach dem Umbenennen und Öffnen kann man die Flag lesen: flag{FalscheFährte}. Um eine Flag einzureichen, musst du eingeloggt sein.
Archiv
Uns sind leider die Challenges ausgegangen.
Die Challenge für den heutigen Tag ist deshalb dieselbe wie vorletztes Jahr.
Viel Spaß! ;)
Die Challenge für den heutigen Tag ist deshalb dieselbe wie vorletztes Jahr.
Viel Spaß! ;)
Lösung (zum Anzeigen hier klicken)
Das Internet Archive sammelt Versionen von verschiedenen Websites über Jahre hinweg. Die Advents-Hacking Seite ist auch einige Zeit nach dem Advents-Hacking 2023 gespeichert worden. Durch das Eingeben von
regiomontanus-gymnasium.de/advents-hacking auf web.archive.org können einige Snapshots der Seite gefunden werden. Der erste davon enthält die Aufgaben und deren Lösungen aus dem Jahr 2023, auch die des siebten Tages. Sie lautet flag{Weihnachtsdeko}. Um eine Flag einzureichen, musst du eingeloggt sein.
Spiel
JS
Evil-Santa steht in Konkurrenz zum Weihnachtsmann und versucht, ebenfalls Geschenke herzustellen.
Wenn du ihm beim Herstellen von 1.000.000 Geschenken hilfst kannst du die Flag von ihm bekommen.
Für diese Challenge könnte der Debugger in den Dev-Tools nützlich sein (
Hinweis (zum Anzeigen anklicken): Nicht nur das HTML sondern auch JavaScript-Inhalte einer Seite kann man nach dem Laden der Seite bearbeiten. Nutze dafür die Konsole des
Für Interessierte:
JS Hacking-Spiel (en): https://alexnisnevich.github.io/untrusted/
Wenn du ihm beim Herstellen von 1.000.000 Geschenken hilfst kannst du die Flag von ihm bekommen.
Für diese Challenge könnte der Debugger in den Dev-Tools nützlich sein (
F12 -> "Debugger"-Tab).Hinweis (zum Anzeigen anklicken): Nicht nur das HTML sondern auch JavaScript-Inhalte einer Seite kann man nach dem Laden der Seite bearbeiten. Nutze dafür die Konsole des
"Console"-Tabs in den Dev-Tools.
Für Interessierte:
JS Hacking-Spiel (en): https://alexnisnevich.github.io/untrusted/
Lösung (zum Anzeigen hier klicken)
Bei dem Spiel handelt es sich um Evil-Santa's Fabriksimulator. Durch das Herstellen von 1000000 Geschenken kann die Aufgabe gelöst werden. Die JavaScript-Quelldateien sind im Debugger des Browsers sichtbar. Dabei fällt auf, dass die Variable
score die Anzahl der verbleibenden Geschenke speichert. Über die Konsole kann diese Variable auf eine niedrige Zahl gesetzt werden und das letzte Geschenk hergestellt werden. Anschließend wird die Lösung angezeigt: flag{Do_you_know_it's_christmas_time}. Um eine Flag einzureichen, musst du eingeloggt sein.
Requests
HTTP
Die Flag wurde dir bereits geschickt. Doch sie wird im Moment nirgends angezeigt.
Um die Flag zu finden öffne zunächst die Dev-Tools (Developer-Tools) des Browsers mit (bei Firefox und Chromium):
Drücke
Wenn du einen Request (eine Spalte) anklickst, öffnet sich auf der rechten Seite eine Übersicht, bei der Anfrage wie auch Antwort des Requests eingesehen werden können.
Eventuell versteckt sich die Flag in irgendeinem Request...
Um die Flag zu finden öffne zunächst die Dev-Tools (Developer-Tools) des Browsers mit (bei Firefox und Chromium):
Rechtsklick -> "Untersuchen (Q)"oderF12
"Network" und klicke ihn an.
Dort kannst du den Datenverkehr zwischen Client (Browser) und Server sehen.Drücke
Strg. + Shift + R um die Seite komplett neu zu laden und öffne diese Challenge neu.Wenn du einen Request (eine Spalte) anklickst, öffnet sich auf der rechten Seite eine Übersicht, bei der Anfrage wie auch Antwort des Requests eingesehen werden können.
Eventuell versteckt sich die Flag in irgendeinem Request...
Lösung (zum Anzeigen hier klicken)
Im Netzwerk-Tab der Dev-Tools findest du ganz unten einen Request zu
challenge_sites/challenge_requests.php. In dessen Antwort ist die Flag flag{G3h31mp0st} enthalten. Um eine Flag einzureichen, musst du eingeloggt sein.
Steganographie
Ein Geheimagent hat uns das angehängte Bild zukommen lassen. Inmitten der unscheinbaren Winterlandschaft soll angeblich eine geheime Botschaft enthalten sein. Schaffst du es, diese wiederherzustellen?
Hinweis (zum Anzeigen anklicken): Die geheime Botschaft ist nicht in Metadaten o.ä. versteckt.
Hinweis (zum Anzeigen anklicken): Die geheime Botschaft ist nicht in Metadaten o.ä. versteckt.
Lösung (zum Anzeigen hier klicken)
Bei genauerer Betrachtung des Bildes, insbesondere unten in der Mitte, fällt eventuell auf, dass ein Bereich im Schnee sehr gleichmäßig aussieht. Bei Heranzoomen des hellen Rechtecks kommt ein sehr blasser QR-Code zum Vorschein. Durch eine Anpassung des Kontrasts und der Helligkeit des Bildes kann dieser gescannt werden. Er enthält die Lösung:
flag{Im_Schnee_versteckt}. Um eine Flag einzureichen, musst du eingeloggt sein.
fetching Fun
HTTP
Lass uns das UI (= User Interface / Benutzeroberfläche) etwas aufhübschen!
Die Logik für einen Spaß-Modus ist eigentlich schon implementiert, doch es gibt noch keine Einstellung im Einstellungsmenü rechts oben um diesen zu aktivieren.
Den Netzwerk-Tab in den Dev-Tools hast du ja bereits kennengelernt.
Kopiere den Request zum Speichern der Einstellungen indem du im Netzwerk-Tab der Dev-Tools auf dem richtigen Request
Für mehr Übersichtlichkeit kannst du nun den
Ändere nun den Fetch-Request so ab, dass der Spaß-Modus aktiviert wird.
Über den Parameter
(Der Spaß-Modus beeinflusst, wenn er aktiviert ist, nur die Hauptseite (index.php).) Sobald du den Spaß-Modus aktiviert hast, wirst du die Flag nicht übersehen können.
Für Interessierte:
Versuche nun den
Zu einfach?
Versuche, mithilfe einer Browser-Erweiterung zum Erstellen von Userscripten, wie z.B. Tampermonkey, eine dauerhafte Möglichkeit, den Spaß-Modus ein- und auszuschalten, zu erstellen.
Alternativ kannst du auch ein Script schreiben, welches auf der Einstellungs-Seite per Hand über die Konsole eingefügt werden muss.
Die Logik für einen Spaß-Modus ist eigentlich schon implementiert, doch es gibt noch keine Einstellung im Einstellungsmenü rechts oben um diesen zu aktivieren.
Den Netzwerk-Tab in den Dev-Tools hast du ja bereits kennengelernt.
Kopiere den Request zum Speichern der Einstellungen indem du im Netzwerk-Tab der Dev-Tools auf dem richtigen Request
Rechtsklick -> "Use as Fetch in Console" ausführst.Für mehr Übersichtlichkeit kannst du nun den
"Console"-Tab in den Dev-Tools verwenden.Ändere nun den Fetch-Request so ab, dass der Spaß-Modus aktiviert wird.
Über den Parameter
fun_enabled wird bestimmt, ob der Spaß-Modus angewendet wird.(Der Spaß-Modus beeinflusst, wenn er aktiviert ist, nur die Hauptseite (index.php).) Sobald du den Spaß-Modus aktiviert hast, wirst du die Flag nicht übersehen können.
Für Interessierte:
Versuche nun den
<form>-Block im HTML so zu ergänzen, dass der Spaß-Modus als Einstellung aktiviert werden kann.Zu einfach?
Versuche, mithilfe einer Browser-Erweiterung zum Erstellen von Userscripten, wie z.B. Tampermonkey, eine dauerhafte Möglichkeit, den Spaß-Modus ein- und auszuschalten, zu erstellen.
Alternativ kannst du auch ein Script schreiben, welches auf der Einstellungs-Seite per Hand über die Konsole eingefügt werden muss.
Lösung (zum Anzeigen hier klicken)
Der Request zum Speichern der Einstellungen wird ausgelöst, sobald man den Knopf zum Speichern anklickt. Diesen Request kannst du entweder im Netzwerk-Tab bearbeiten und mit dem zusätzlichen Parameter
fun_enabled=1 erneut schicken, oder über einen angepassten fetch-Request wiederholen. Der Code für den fetch-Request könnte beispielsweise so aussehen:
fetch("settings.php", {
"credentials": "include", ...
"body": "...&fun_enabled=1", ...
});
Nach dem Speichern ist die Flag im Hintergrund der Hauptseite sichtbar: "credentials": "include", ...
"body": "...&fun_enabled=1", ...
});
flag{Weihnachtsbeleuchtung}. Um eine Flag einzureichen, musst du eingeloggt sein.
Link
HTML
Die Flag findest du unter diesem Link. Irgendetwas scheint damit aber nicht zu stimmen.
Lösung (zum Anzeigen hier klicken)
Beim Anklicken wird eine andere Seite geöffnet, als die, die im Text des Links angegeben ist. Durch das Kopieren und Abrufen der vollständigen Adresse kann man die Flag finden:
flag{Truegerische_Verknuepfung}. Um eine Flag einzureichen, musst du eingeloggt sein.
Requests 2
HTTP
Dies ist eine schwierige optionale Bonus-Challenge.
Für Bonus-Challenges erhältst du keine Punkte.
Um die Flag zu bekommen muss man vorher eine lange Rechenaufgabe lösen, die man vom Server abfragen kann. Das Ergebnis muss innerhalb von 10 Sekunden an den Server zurückgeschickt werden.
Die Aufgabe ist es einen String mit dem SHA-256 Algorithmus zu hashen.
Folgendes ist dabei zu beachten:
Die Rückgabe an den Server besteht aus:
Alle Anfragen müssen als Form-POST-Requests an
Um eine Aufgabe zu bekommen muss ein Request mit dem Parameter
Hinweis (zum Anzeigen anklicken): Die JavaScript-Funktion
Für Bonus-Challenges erhältst du keine Punkte.
Um die Flag zu bekommen muss man vorher eine lange Rechenaufgabe lösen, die man vom Server abfragen kann. Das Ergebnis muss innerhalb von 10 Sekunden an den Server zurückgeschickt werden.
Die Aufgabe ist es einen String mit dem SHA-256 Algorithmus zu hashen.
Folgendes ist dabei zu beachten:
- Der Hash muss mit "1337" beginnen.
- Falls nicht muss eine Nonce-Zahl geändert werden und ein neuer Hash erstellt werden.
- Die Nonce kann frei gewählt werden.
"Alice,Bob,42 HACK,2025-12-01 12:00:00 UTC,13374242446F6368206B65696E65204861636B65722D436F696E7320443A4242,123"
wobei die Nonce hier 123 ist. Der String wird dir (ohne Nonce) vom Server geschickt.Die Rückgabe an den Server besteht aus:
"previous_hash":dem vorherigen Hash,"nonce":der Nonce,"valid_hash":dem neuen Hash, welcher mit dieser Nonce erstellt wurde
"previous_hash", "nonce" und "valid_hash") als POST-Request zurückgeschickt werden.Alle Anfragen müssen als Form-POST-Requests an
challenge_sites/challenge_requests_2.php geschickt werden.Um eine Aufgabe zu bekommen muss ein Request mit dem Parameter
getNewString=true geschickt werden.Hinweis (zum Anzeigen anklicken): Die JavaScript-Funktion
fetch ist asynchron. Lösung (zum Anzeigen hier klicken)
Mit einem eigenen Skript kann man die Aufgabe lösen. Durch das Ändern des Nonce wird irgendwann eine Ausgabe der Hashfunktion erreicht, die mit 1337 anfängt. Nach dem Zurückschicken dieses Hashes und der restlichen Parameter ist die Aufgabe gelöst:
flag{6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b}. Um eine Flag einzureichen, musst du eingeloggt sein.
Verhext
Oh nein! Unserem Entwickler ist beim Erstellen der heutigen Challenge die Datei mit der Flag verloren gegangen. Kannst du anhand der Terminalausgabe die Datei wiederherstellen?
... bash-5.3$ cd challenge_13/ bash-5.3$ ls flag.txt.gz bash-5.3$ xxd flag.txt.gz 00000000: 1f8b 0808 3598 3469 0003 666c 6167 2e74 ....5.4i..flag.t 00000010: 7874 004b cb49 4caf 76ce cf4b 2f4a 2c29 xt.K.IL.v..K/J,) 00000020: 5654 88cc 2f55 284a 2d2e c92f 4a4d 5128 VT../U(J-../JMQ( 00000030: c948 55c8 c92f 2e51 48ce cf2b 49cd 2b29 .HU../.QH..+I.+) 00000040: d6ab e502 0084 3e3a 5430 0000 00 ......>:T0... bash-5.3$ vim ~/advents-hacking-secret-challenges.txt bash-5.3$ cd~/Trash bash: cd~/Trash: No such file or directory bash-5.3$ rm -rf * bash-5.3$ ls bash-5.3$
Lösung (zum Anzeigen hier klicken)
Glücklicherweise hatte der Entwickler noch einen Hexdump der Datei mit der Flag in der Terminalausgabe gespeichert. Mit dem Linux-Befehl
xxd -r oder mit einer Website wie CyberChef kann der Hexdump zurück in die ursprüngliche Datei verwandelt werden. Die entpackte .gz-Datei enthält die Flag: flag{Congrats! You restored the lost contents.} Um eine Flag einzureichen, musst du eingeloggt sein.
Web Security
Anbei kannst du einen Ausschnitt aus dem Code einer Webanwendung finden. Nur hat sich hier leider eine Sicherheitslücke eingeschlichen. Kannst du herausfinden, um welche Vulnerability es sich handelt?
Die Flag ist im üblichen Format anzugeben, wobei in den geschweiften Klammern die geläufige Abkürzung für diese Art von Vulnerabilities stehen soll.
Die Flag ist im üblichen Format anzugeben, wobei in den geschweiften Klammern die geläufige Abkürzung für diese Art von Vulnerabilities stehen soll.
...
$profiles = get_profiles();
?>
<div id="profiles">
<?php foreach ($profiles as $profile) { ?>
<div class="profile-card">
<div class="profile-name"><?php echo $profile->name; ?></div>
<div class="profile-description">
<?php echo $profile->description; ?>
</div>
</div>
<?php } ?>
</div>
... Lösung (zum Anzeigen hier klicken)
Der Tag
<?php im Quellcode verrät, dass es sich bei der verwendeten Programmiersprache um PHP handelt. Nach einer kurzen Recherche nach den häufigsten Vulnerabilities in PHP-Anwendungen findet man unter anderem XSS-Lücken. Dabei wird die Eingabe eines Nutzers unverändert im HTML ausgegeben, wodurch unerwartet Element wie z.B. Script-Tags in die Seite eines anderen Benutzers eingeführt werden können. Damit kann der Angreifer z.B. Session-Cookies stehlen, um den Account des anderen Benutzers zu kapern. Die Flag lautet flag{XSS}. Um eine Flag einzureichen, musst du eingeloggt sein.
Link 2
HTML
Dies ist eine schwierige optionale Bonus-Challenge.
Für Bonus-Challenges erhältst du keine Punkte.
Die Flag ist nur einen Klick entfernt. Vielleicht.
Für Bonus-Challenges erhältst du keine Punkte.
Die Flag ist nur einen Klick entfernt. Vielleicht.
Lösung (zum Anzeigen hier klicken)
Beim Anklicken des Links öffnet sich erneut eine falsche Seite. Nach genauerer Untersuchung stellt sich heraus, dass das
href-Attribut des Link-Elements den richtigen Link enthält, die Navigation beim Anklicken aber durch JavaScript auf eine andere Seite umgeleitet wird. Die Flag kann man entweder durch das Öffnen des im href-Attribut angegebenen Links oder durch das Öffnen des Links in einem neuen Tab ergattern. Um eine Flag einzureichen, musst du eingeloggt sein.
Repository
Nicht schon wieder! Unserem Entwickler ist erneut beim Erstellen der heutigen Challenge die Datei mit der Flag verloren gegangen. Zum Glück war sie allerdings in ein Repository committet. Schaffst du es, anhand des angehängten Repos die Datei mit der Flag wiederherstellen?
Lösung (zum Anzeigen hier klicken)
Nach dem Herunterladen und Entpacken der Datei fällt der
.git-Ordner darin auf. Mithilfe des git-Werkzeugs kann die Commit-History angezeigt werden: git log. Daraufhin werden zwei Commits angezeigt. Die Flag erhält man, indem man sich entweder mit git show 405380 die Diff des zweiten Commits anzeigen lässt. Alternativ kann man auch den Stand des Repositories beim ersten Commit anschauen: git checkout 491865. Schließlich lässt sich die Flag aus der Datei flag-day16.txt auslesen: flag{Weihnachten gerettet}. Um eine Flag einzureichen, musst du eingeloggt sein.
Reverse Engineering 1
Dies ist eine schwierige optionale Bonus-Challenge.
Für Bonus-Challenges erhältst du keine Punkte.
Beim sogenannten Reverse Engineering ist es das Ziel, von einem bereits kompilierten Programm auf den Quellcode zurückzuschließen, um somit die Logik des Programms aufzudecken. Die angehängte Linux-Binary fragt nach einem Passwort. Kannst du dieses herausfinden?
Für Bonus-Challenges erhältst du keine Punkte.
Beim sogenannten Reverse Engineering ist es das Ziel, von einem bereits kompilierten Programm auf den Quellcode zurückzuschließen, um somit die Logik des Programms aufzudecken. Die angehängte Linux-Binary fragt nach einem Passwort. Kannst du dieses herausfinden?
Lösung (zum Anzeigen hier klicken)
Nach dem Untersuchen der angehängten Datei mit dem
file-Linux-Befehl stellt sich heraus, dass es sich um eine Linux-Executable handelt. Mit einem Decompiler wie z.B. Ghidra kann eine ungefähre Annäherung an den ursprünglichen C-Code generiert werden. Die vom Programm gelesene Eingabe wird mit einem Array an Werten verglichen, wobei jeder Wert mit einer bestimmten Zahl xor genommen wird. Für den ersten Buchstabe der Eingabe wird 41 verwendet, für den zweiten 42 und für den dritten 43. Ab dem vierten Buchstaben wiederholt sich diese Sequenz. Hierbei ist zu beachten, dass diese Zahlen im Dezimalsystem angegeben sind und nicht im Hexadezimalsystem. Den Array, mit dem die Eingabe verglichen wird, kann man nun mit den richtigen XOR-Operationen entschlüsseln und kommt auf die Flag flag{m4g1c-v4lu3-x0r}. Um eine Flag einzureichen, musst du eingeloggt sein.
Vertauscht
Crypto
Im heutigen Türchen kannst du ein weiteres einfaches Verschlüsselungsverfahren kennenlernen: Bei der sogenannten monoalphabetischen Substitution wird jeder Buchstabe durch einen anderen ersetzt. Der nachfolgende Text wurde mit einer solchen Substitution verschlüsselt. Kannst du mithilfe der Buchstabentabelle die Zuordnung wiederherstellen und die geheime Botschaft entschlüsseln?
Qbele Hmwecdk-Ghijef,
gsnnecdqbig ghd evig mef Hmwecdkjhqecmef lbk pedzd Kthkk oerhigd.
Gbef bkd mbe Nqho nvef evig: nqho{Ecdkigqvekkeqd_mhcj_lejhccder_Jqhfdexd}.
Abf aveckigec evig csig ebce nfsegqbige Aebgchigdkzebd!
Rbd nfevcmqbigec Ofvekkec,
Evef Hmwecdk-Ghijbco-Dehr
gsnnecdqbig ghd evig mef Hmwecdkjhqecmef lbk pedzd Kthkk oerhigd.
Gbef bkd mbe Nqho nvef evig: nqho{Ecdkigqvekkeqd_mhcj_lejhccder_Jqhfdexd}.
Abf aveckigec evig csig ebce nfsegqbige Aebgchigdkzebd!
Rbd nfevcmqbigec Ofvekkec,
Evef Hmwecdk-Ghijbco-Dehr
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|
Lösung (zum Anzeigen hier klicken)
Basierend auf der ersten Krypto-Challenge wird der Plaintext dieser Challenge erneut mit Liebe Advents-Hacker anfangen. Somit können direkt die richtigen Buchstaben für die Zuordnung in die Tabelle eingetragen werden. Damit werden einige Wörter aufgedeckt, und das Alphabet kann Stück für Stück vervollständigt werden. Schließlich ist der gesamte Text sichtbar und die Flag kann gelesen werden:
flag{Entschluesselt_dank_bekanntem_Klartext}. Um eine Flag einzureichen, musst du eingeloggt sein.
Bestellung
Nach der Online-Bestellung bei einer bekannten Fastfood-Kette erhältst du eine E-Mail mit folgendem Link zu einem PDF mit der Bestellbestätigung:
Für das Bearbeiten dieser Challenge musst du eingeloggt sein.
Kannst du den Fehler in der Webanwendung aufdecken und so die Flag finden?
Lösung (zum Anzeigen hier klicken)
Nach dem Öffnen der Bestellbestätigung wird ein PDF angezeigt. Sowohl oben rechts im PDF als auch in der Adressleiste des Browsers ist die Nummer der Bestellung zu sehen. Durch das Ändern der Nummer können Bestellbestätigungen von anderen Kunden angezeigt werden. Die Bestellbestätigung mit der Nummer 0 enthält die Flag:
flag{Ins3cur3_d1r3ct_0bj3ct_r3f3r3nc3s} Um eine Flag einzureichen, musst du eingeloggt sein.
RSA
Crypto
Das RSA-Kryptosystem ist ein Beispiel für ein Verfahren, welches asymmetrische Kryptographie nutzt. Während bei symmetrischer Kryptographie der selbe Schlüssel zum Ver- und Entschlüsseln von Nachrichten verwendet wird, gibt es bei asymmetrischen Verfahren zwei Schlüssel: Zum Verschlüsseln einer Nachricht wird der sogenannte public key des Gesprächspartners verwendet. Den Ciphertext kann dann nur dieser mit dem passenden private key entschlüsseln, um die ursprüngliche Nachricht wiederherzustellen. Im Vergleich zu symmetrischen Verfahren, bei denen der einzelne Schlüssel über einen getrennten, sicheren Kanal übertragen werden muss, hat dies den Vorteil, dass der zum Verschlüsseln verwendete Key öffentlich geteilt werden kann.
Im folgenden gehen wir von der "Textbook"-RSA-Version aus.
Eine geheime Zahl wurde mit dem public key e = 30187 und dem Modulus n = 30551 verschlüsselt. Der daraus hervorgehende Ciphertext ist c = 13517. Kannst du ohne den zugehörigen private key d die Verschlüsselung knacken und die Geheimzahl wiederherstellen? Die Flag ist dann
Im folgenden gehen wir von der "Textbook"-RSA-Version aus.
Eine geheime Zahl wurde mit dem public key e = 30187 und dem Modulus n = 30551 verschlüsselt. Der daraus hervorgehende Ciphertext ist c = 13517. Kannst du ohne den zugehörigen private key d die Verschlüsselung knacken und die Geheimzahl wiederherstellen? Die Flag ist dann
flag{Geheimzahl}. Lösung (zum Anzeigen hier klicken)
Die Sicherheit des RSA-Kryptosystems beruht darauf, dass das Produkt zweier sehr hoher Primzahlen, der Modulus, nur schwer faktorisiert werden kann. In diesem Fall ist der Modulus allerdings sehr klein. Nach dem Faktorisieren erhält man die beiden Primfaktoren p=137, q=223. Darüber kann man die restlichen Parameter berechnen: n-1 = (p-1)(q-1) = 30192; d = 18115. Mit dem private key d kann man die Nachricht entschlüsseln: m = 1351718115 % 30551 = 13337.
Alternativ zu diesen Berechnungen kann man auch ein Werkzeug wie z.B. den RSA Cipher Calculator nutzen.
Die Flag lautet also
Alternativ zu diesen Berechnungen kann man auch ein Werkzeug wie z.B. den RSA Cipher Calculator nutzen.
Die Flag lautet also
flag{13337}. Um eine Flag einzureichen, musst du eingeloggt sein.
Im Museum
Was ist im angehängten Bild zu sehen?
(Bild von Thorsten Butz unter Lizenz CC-BY-SA.)
(Bild von Thorsten Butz unter Lizenz CC-BY-SA.)
Lösung (zum Anzeigen hier klicken)
Mithilfe einer Bildsuchmaschine wie z.B. Google Bilder kann man herausfinden, dass es sich bei dem Computer im Bild um eine Replika des Zuse Z3 handelt. Alternativ kann man auch nach der Geschichte von Computern recherchieren und das Lösungswort
flag{Zuse Z3} finden. Um eine Flag einzureichen, musst du eingeloggt sein.
Logic Gates
Mit sogenannten Logikgattern können verschiedene Schaltkreise implementiert werden, die auf binären Zahlen Operationen wie z.B. eine Addition durchführen. Moderne Prozessoren basieren auf solchen Logic Gates. Unten kannst du ein Beispiel für eine Schaltung erkennen, die einige verschiedene Logikgatter enthält. Dein Ziel ist es heute, ganz unten die richtige Eingabe für die Schaltung zu finden, sodass das Signal oben bei der Ausgabe der Schaltung aktiviert wird.
Viel Spaß!
Viel Spaß!
Lösung (zum Anzeigen hier klicken)
Um die Ausgabe zu aktivieren, müssen sowohl die ersten sechs Eingaben als auch die achte Eingabe und genau eine der letzten beiden Eingaben aktiviert sein.
Um eine Flag einzureichen, musst du eingeloggt sein.
Gelöscht
Die Flag war einmal eindeutig im angehängten Bild sichtbar. Danach wurde sie aber aus dem Bild gelöscht. Kannst du die Bildbearbeitung rückgänig machen und die Flag wiederherstellen?
Lösung (zum Anzeigen hier klicken)
Beim Betrachten der Metadaten des Bilds mit
exiftool fällt auf, dass ein Thumbnail Image enthalten ist. Dieses kann mit dem Befehl exiftool -b -ThumbnailImage gelöschte-flag.jpg > thumbnail.jpg extrahiert werden und enthält die Flag: flag{versteckt-im-exif-thumbnail}. Um eine Flag einzureichen, musst du eingeloggt sein.
Assembly
Programmiersprachen wie C oder Java nutzen verschiedene Abstraktionen, um es dem Programmierer einfacher zu machen: Es können Konstrukte wie bedingte Anweisungen oder Schleifen verwendet werden. Auf der Ebene des Prozessors werden diese Konstrukte mit kleineren Bausteinen umgesetzt, den sogenannten Befehlen. Der gesamte Befehlssatz eines modernen Prozessors umfasst hunderte dieser Befehle, die z.B. ein Compiler nutzen kann, um ein C-Programm in die Sprache des Prozessors zu bringen.
Im Anhang findest du ein Programm, welches in einer solchen Maschinensprache, auch Assembly genannt, geschrieben ist. Der Befehlssatz des Prozessors enthält nur sehr wenige Befehle: Ein Akkumulator kann für Rechenoperationen verwendet werden und ein Speicher steht auch bereit. Kannst du herausfinden, was die einzelnen Befehle konkret bedeuten und das Programm "ausführen"? Zum Ausführen kannst du entweder Stift und Papier bzw. ein Textdokument nutzen oder selbst ein kleines Programm schreiben. Die Flag steht nach der vollständigen Ausführung des Programms in ihrer ASCII-Repräsentation direkt am Anfang des Speichers.
Hinweis 1 (zum Anzeigen anklicken): Steht am Ende eines Befehls ein
Hinweis 2 (zum Anzeigen anklicken): Bei Sprungbefehlen entspricht die angegebene Zahl genau der Zeilennummer in der angehängten Datei. Leere Zeilen werden auch mitgezählt.
Hinweis 3 (zum Anzeigen anklicken):
Im Anhang findest du ein Programm, welches in einer solchen Maschinensprache, auch Assembly genannt, geschrieben ist. Der Befehlssatz des Prozessors enthält nur sehr wenige Befehle: Ein Akkumulator kann für Rechenoperationen verwendet werden und ein Speicher steht auch bereit. Kannst du herausfinden, was die einzelnen Befehle konkret bedeuten und das Programm "ausführen"? Zum Ausführen kannst du entweder Stift und Papier bzw. ein Textdokument nutzen oder selbst ein kleines Programm schreiben. Die Flag steht nach der vollständigen Ausführung des Programms in ihrer ASCII-Repräsentation direkt am Anfang des Speichers.
Hinweis 1 (zum Anzeigen anklicken): Steht am Ende eines Befehls ein
I, so rechnet der Befehl mit der danach angegebenen Zahl. So addiert z.B. ADDI 1337 die Zahl 1337 auf den Akkumulator. Fehlt das I, dann bezieht sich der Befehl auf einen Wert im Speicher, außer bei Sprungbefehlen. Also lädt z.B. LOAD 10 die Zahl aus Speicherzelle 10.Hinweis 2 (zum Anzeigen anklicken): Bei Sprungbefehlen entspricht die angegebene Zahl genau der Zeilennummer in der angehängten Datei. Leere Zeilen werden auch mitgezählt.
Hinweis 3 (zum Anzeigen anklicken):
JZ führt den Sprung nur durch, wenn der Wert des Akkumulators gleich 0 ist. Lösung (zum Anzeigen hier klicken)
Hier zuerst eine Erklärung der einzelnen Befehle:
Das Programm setzt die Speicherzellen mit der Flag auf die richtigen Wert, unter anderem auch mithilfe einer Schleife. Nach dem Ausführen haben die Speicherzellen 0-8 die Werte 102, 108, 97, 103, 123, 67, 80, 85, 125, was der Dezimalrepräsentation des ASCII-Texts
LOAD lädt den Inhalt der danach angegebenen Speicherzelle in den Akkumulator.LOADI lädt die danach angegebene Zahl in den Akkumulator.STORE speichert den Inhalt des Akkumulators in der angegebenen Speicherzelle.ADD addiert den Inhalt der danach angegebenen Speicherzelle auf den Akkumulator.ADDI addiert die danach angegebene Zahl auf den Akkumulator.SUB subtrahiert den Inhalt der danach angegebenen Speicherzelle vom Akkumulator.SUBI subtrahiert die danach angegebene Zahl vom Akkumulator.JMP springt zur Anweisung in der angegebenen Codezeile.JZ führt den Sprung nur durch, falls der Wert des Akkumulators gleich null ist.Das Programm setzt die Speicherzellen mit der Flag auf die richtigen Wert, unter anderem auch mithilfe einer Schleife. Nach dem Ausführen haben die Speicherzellen 0-8 die Werte 102, 108, 97, 103, 123, 67, 80, 85, 125, was der Dezimalrepräsentation des ASCII-Texts
flag{CPU} entspricht. Um eine Flag einzureichen, musst du eingeloggt sein.
Java
Die Programmiersprache Java ist für ihre Kompatibilität mit verschiedensten Geräten bekannt. Die einmal zu Bytecode kompilierten Quelldateien können auf allen Plattformen, die Java unterstützen, ausgeführt werden.
In den angehängten Java-Quellcode scheinen sich aber einige Fehler eingeschlichen zu haben. Kannst du diese aufspüren? In der Flag musst du die Nummern der Codezeilen, die einen Fehler enthalten, jeweils durch ein Semikolon getrennt angeben. Sollte z.B. in der ersten, zweiten und dritten Zeile der Quellcodedatei ein Fehler enthalten sein, wäre die Flag
In den angehängten Java-Quellcode scheinen sich aber einige Fehler eingeschlichen zu haben. Kannst du diese aufspüren? In der Flag musst du die Nummern der Codezeilen, die einen Fehler enthalten, jeweils durch ein Semikolon getrennt angeben. Sollte z.B. in der ersten, zweiten und dritten Zeile der Quellcodedatei ein Fehler enthalten sein, wäre die Flag
flag{1;2;3}. Lösung (zum Anzeigen hier klicken)
Zeile 1 enthält einen Fehler, der richtige Import sollte
Zeile 3 enthält einen Fehler, da Namen von Klassen nicht mit einer Zahl starten dürfen.
Zeile 7 enthält einen Fehler, da es sich bei dem Zeichen am Ende nicht wie zu erwarten um ein Semikolon handelt, sondern um ein griechisches Fragezeichen.
Zeile 11 enthält einen Fehler, da der Format Specifier
Zeile 13 enthält einen Fehler, da das Leerzeichen zwischen
Somit lautet die Flag
import java.util.Random; lauten.Zeile 3 enthält einen Fehler, da Namen von Klassen nicht mit einer Zahl starten dürfen.
Zeile 7 enthält einen Fehler, da es sich bei dem Zeichen am Ende nicht wie zu erwarten um ein Semikolon handelt, sondern um ein griechisches Fragezeichen.
Zeile 11 enthält einen Fehler, da der Format Specifier
%d im Format String falsch ist. Der eingefügte Wert ist nämlich ein String und kein Integer.Zeile 13 enthält einen Fehler, da das Leerzeichen zwischen
int und coolNumber ein Non-Breaking Space ist, was in Java nicht erlaubt ist.Somit lautet die Flag
flag{1;3;7;11;13}. Um eine Flag einzureichen, musst du eingeloggt sein.
Reverse Engineering 2
Dies ist eine schwierige optionale Bonus-Challenge.
Für Bonus-Challenges erhältst du keine Punkte.
Das angehängte Java-Programm fragt beim Öffnen nach einem Passwort. Nach einem kurzen Blick in den dekompilierten Code ist allerdings nicht direkt eine Überprüfung des eingegebenen Passworts erkennbar. Kannst du dem Geheimnis auf den Grund gehen?
Für Bonus-Challenges erhältst du keine Punkte.
Das angehängte Java-Programm fragt beim Öffnen nach einem Passwort. Nach einem kurzen Blick in den dekompilierten Code ist allerdings nicht direkt eine Überprüfung des eingegebenen Passworts erkennbar. Kannst du dem Geheimnis auf den Grund gehen?
Lösung (zum Anzeigen hier klicken)
Im Quellcode läuft die Überprüfung des Passworts darauf hinaus, dass ein Assembly-Programm durch einen Interpreter ausgeführt wird, welches die Nutzereingabe überprüft. Über einen Debugger können die vollständigen Assembly-Anweisungen in der Variable
actuallyTheOne ausgelesen werden, bevor diese interpretiert werden. Nach genauerer Betrachtung des Assembly-Programms wird deutlich, dass es in zufälliger Reihenfolge von einigen Speicherzellen einen bestimmten Wert abzieht. Danach wird von jeder dieser Speicherzellen nochmal 20 abgezogen und der Wert mit null verglichen. Sollte eine davon nicht null sein, kann der Inhalt von Speicherzelle 100 nicht mehr eins werden und die eingegebene Flag ist falsch. Somit kann man die pro Speicherzelle gesetzte Zahl auf die richtige Eingabe zurückrechnen und kommt auf die Dezimalrepräsentation der Flag flag{n3st3d-byt3c0d3-vms-4r3-1337}. Um eine Flag einzureichen, musst du eingeloggt sein.
Shell
In der heutigen Challenge kannst du mit der Shell eines Unix-basierten Systems experimentieren. Die Flag ist auf einer zweiten Festplatte gespeichert. Nur brauchst du für das Mounten der Partition das Superuser-Passwort. Kannst du es aufspüren und die Flag auslesen?
(Es werden nur einige Kommandos unterstützt, da diese Shell keine echte Shell, sondern lediglich eine Simulation ist.)
(Es werden nur einige Kommandos unterstützt, da diese Shell keine echte Shell, sondern lediglich eine Simulation ist.)
Um die Shell zu verwenden, musst du eingeloggt sein.
Lösung (zum Anzeigen hier klicken)
Nach Eingabe des Befehls
help erhält man die Information, dass unter anderem die Befehle lsblk und mount hilfreich sein könnten. Nach dem Ausführen von lsblk ist erkenntlich, dass die Partition der zweiten Festplatte auf dem Pfad /dev/sda1 liegt. Mit dem mount-Befehl kann diese gemountet werden. Allerdings erfordert dieser Root-Rechte. Nach dem Durchsuchen des Home-Directories findet man das Root-Passwort in der Datei .secret/pw.txt. Es lautet XmJkPQB. Mit dem Befehl su können dann Root-Rechte erlangt werden und der Befehl mount /dev/sda1 /mnt ausgeführt werden. Jetzt ist die Partition im Ordner /mnt gemountet. Darin befindet sich dann die Datei flag.txt: flag{B4ckup_r3c0v3r3d!}. Um eine Flag einzureichen, musst du eingeloggt sein.
Weihnachten
Hier eine Nachricht vom Weihnachtsmann im Auftrag des Advents-Hacking-Teams:
Lösung (zum Anzeigen hier klicken)
Der Weihnachtsmann nutzt eine Morsetaste, um seine Botschaft zu übermitteln. Nach dem Dekodieren der Morsezeichen erhält man die Nachricht
FLAG{MERRYXMAS}. Um eine Flag einzureichen, musst du eingeloggt sein.