Die Advents-Challenge 2023 ist beendet. Vielen Dank für eure Teilnahme!
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Willkommen
Willkommen beim Hacking-Adventskalender.
Ab dem 1.12.2023 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 Verchiebung 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)
- F => E
- j => i
- o => n
- t => s
- u => t
- j => i
- f => e
- h => g
Linus
Eingesetzt bei PCs und vorallem Servern ist Linux ein sehr weit verbreiteter, quelloffener Kernel (Bestandteil eines Betriebssystems).
Ihr kennt sicher auch einige Distributionen, welche den Linux-Kernel verwenden, wie zum Beispiel Arch Linux, Ubuntu, openSUSE, Linux Mint etc.
Sogar Android nutzt den Linux-Kernel!
Wisst ihr aber auch, wer angefangen hat Linux zu programmieren?
Bitte tragt den Vor- und Nachnamen des ersten Entwicklers ein.
Bsp.: flag{Hans_Dampf}
Lösung (zum Anzeigen hier klicken)
MD5
Dieser Hash wurde mithilfe von MD5 gehashed. Versuche ihn zu entschlüsseln um die Lösung zu erhalten.
MD5-Hash: d3cc0884b6eb8a7424a4047082836e77
Lösung (zum Anzeigen hier klicken)
Q
Die Flag steht bereits hier: flag{versteckteFlag}
Lösung (zum Anzeigen hier klicken)
C
Let's c.
Lösung (zum Anzeigen hier klicken)
-
Zeile 15: Die Main-Funktion muss zwar nicht unbedingt Parameter haben, sie muss aber einen Integer zurückgeben. Richtig würde die Zeile also
int main() {
oderint main(int argc, char* argv[]) {
lauten. -
Zeile 16: Bei der Deklaration von Arrays in C müssen die eckigen Klammern nicht nach dem Datentyp, sondern nach dem Namen des Arrays stehen. Die Codezeile sollte also so aussehen:
char solution[] = "ThisIsNotTheFlag!";
-
Zeile 17: Beim Kompilieren wird diese Zeile zwar keinen Fehler, sondern nur eine Warnung hervorrufen, wenn das Programm allerdings ausgeführt wird, entsteht nicht die erwartete Ausgabe, da für die Ausgabe eines Strings nicht der Format Specifier
%i
, sondern%s
verwendet werden muss. Richtig wäre alsoprintf("%s", solution);
- Zeile 19: Hier fehlt die schließende geschweifte Klammer der Main-Funktion.
Zip
Diese Datei hat die .zip-Endung.
Ich sehe jedoch keinen Reißverschluss...
Lösung (zum Anzeigen hier klicken)
Sicherung
Hallo,
die Flag für die Challenge steht bereits im Dump.
Leider stehen noch ein paar andere Flags daneben und ich weiß nicht, welche Flag die richtige ist...
Ich habe außerdem auch keine Ahnung über den Aufbau der Datenbank.
Wenn du die richtige Flag herausfinden kannst, darfst du sie gleich eintragen.
Lösung (zum Anzeigen hier klicken)
JS
Hoffentlich haben euch 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 mit der Funktion enableFun()!
JavaScript wird dir helfen.
Lösung (zum Anzeigen hier klicken)
enableFun()
eingegeben werden, dann wird der Spaß-Modus aktiviert und die Flag ausgegeben: flag{Weihnachtsdeko} Git
Diese Challenge soll zeigen, an welche Informationen man ganz einfach mit einem .git Ordner der Git-Versionsverwaltungssoftware kommen kann.
Demanch kann es ein weiterer Schritt sein, um an die Identität des Erstellers zu kommen (Nutzername).
Mit externen Tools kann man sogar die komplette Historie aller Dateien anschauen.
Stöbert also etwas im Verzeichnis herum und findet die Flag.
Lösung (zum Anzeigen hier klicken)
.git/logs/HEAD
gibt Aufschluss über vergangene Commits im Git-Repository. Die selben Informationen kann man (falls Git installiert ist) mit dem Befehl git log
angezeigt bekommen. Drei Commits sind bereits vorhanden, einer von diesen enthält die Flag in der Commit-Message: flag{git commit -m "flaggy"} Weiß
Wie kann in einem komplett weißem Pixel eine ganze Flag versteckt sein? Es ist einfach: Es geht nicht.
Lösung (zum Anzeigen hier klicken)
Geschenk
Es ist zwar noch nicht ganz Weihnachten, ihr bekommt jedoch trotzdem schon einmal
ein Geschenk von mir. Vielleicht habe ich etwas viel Geschenkpapier verwendet, aber ich denke
ihr werdet es schon aufbekommen ;).
Und noch ein Tipp für das Passwort:
Was muss man mit Geschenkpapier tun, wenn man das Geschenk nicht aus dem Papier bekommt?
(Lösung ist substantiviert und mit ß anzugeben)
Lösung (zum Anzeigen hier klicken)
deb
Debian-Pakete haben die Dateiendung ".deb". Damit kann man auf Debian-basierten Betreibssystemen (wie bsp. Debian und Ubuntu) die Software ganz einfach installieren.
Ich habe auf meinem Rechner dieses Installations-Paket in meinem Downloads-Ordner gefunden, weiß aber nicht mehr, was es beim Ausführen installieren würde.
Bitte findet für mich heraus, um welches Programm es sich handelt und gebt mir die Homepage-Addresse, damit ich es erneut herunterladen kann. Hoffentlich ist es kein Virus :O
Lösung (zum Anzeigen hier klicken)
Obv?
Der Code der Challenge ist vielleicht nicht obvious (offensichtlich) aber dafür offen ersichtlich.
Um die Flag neu zu validieren muss die Seite übrigens nicht neu geladen werden.
Lösung (zum Anzeigen hier klicken)
Ein guter erster Schritt ist es, Leerzeilen einzufügen. Danach kann man den Pfad im Code verfolgen, der beim Anklicken vom Validieren-Knopf ausgeführt wird. Wenn die Funktion
c(i)
true zurückgibt, dann ist die Flag richtig. Parameter der Funktion ist die eingegebene Flag. Jetzt kann die Funktion weiter analysiert werden:Zuerst wird die eingegebene Flag an
btoa
übergeben, dies bedeutet, dass sie Base64-encodet und das Ergebnis in s
gespeichert wird.Anschließend wird für jedes Zeichen in s der Char-Code gelesen (
charCodeAt
) und in Hex umgewandelt. Anschließend wird der Hex-String ggf. mit Nullen ausgefüllt (padStart(2,'0')
). Diese Hex-Strings werden miteinander verkettet und an o
angehängt. Ein weiterer String (o1
) wird erstellt.Für jedes Zeichen dieses neuen Strings wird überprüft, ob es im Array
a
vorhanden ist. Array a
enthält alle Zeichen des Alphabets in der richtigen Reihenfolge. Wenn das Zeichen nicht im Alphabet ist (also eine Zahl im Hex-String ist), wird es direkt in den String o1
kopiert. Ansonsten wird der Index im Alphabet gelesen, um 13 erhöht und auf 26 gewrapt (mit der Modulo-Rechnung a[(i+13)%26]
). Das Ergebnis davon wird an die Ausgabe angehängt.Also handelt es sich um ROT13, da die Buchstaben des Hex-Strings jeweils um 13 Zeichen im Alphabet nach hinten verschoben wurden. Der aus der Flag erzeugte String wird schließlich mit
p
verglichen.p
ist ein bereits definierter String, über den wir die Flag erhalten können, wenn wir die selben Operationen rückwärts durchführen. Zuerst müssen also alle Buchstaben im Alphabet um 13 verschoben werden. Dann kommen wir auf den String5a6d78685a337473615756695a584a6663325679646d
56796332567064476c6e583342792f475a6c626e303d
.Dieser muss nun von Hex zurückkonvertiert werden, das Ergebnis davon ist dann unser Base64-String:
ZmxhZ3tsaWViZXJfc2VydmVyc2VpdGlnX3By/GZlbn0=
. Dieser kann dann z.B. mit atob(...)
dekodiert werden und ergibt letztlich die Flag: flag{lieber_serverseitig_prüfen} Hüte
Ordne richtig zu. Klicke die Hüte an, um ihre Farbe zu ändern. Achtung: Nicht jede Farbe wird benötigt!
Sie betreiben illegales Hacking mit bösen Absichten und oft auch wegen des Geldes.
Obwohl man sie als "gut" ansehen kann, nutzen sie oft ebenfalls verbotene Wege.
Sie stellen sich ebenfalls gegen die "bösen" Hacker.
Sie können die Auswirkungen ihrer Taten oft noch nicht abschätzen und werden als Script-Kiddies (Skids) bezeichnet, wenn sie hautsächlich von anderen geschriebenen Skripte ausführen.
Lösung (zum Anzeigen hier klicken)
Hacker, die im Internet gegen die Black Hats spielen und dabei verbotene Wege nutzen, nennt man Red Hats.
Die ethischen Hacker, welche darauf achten, keine Straftaten zu begehen, nennt man White Hats.
Script-Kiddies werden auch Green Hats genannt.
Hacker, die zwar illegal hacken und unerlaubt in Systeme einbrechen, aber den Unternehmen manchmal dabei helfen, die Sicherheitslücken zu beheben, nennt man Grey Hats.
Hacker, die persönliche Rache suchen oder Systeme vor ihrer Veröffentlichung auf Sicherheitslücken testen, bezeichnet man als Blue Hats.
moz://a
Unter der angegebenen URL könnt ihr eine Datei eines PDF-Readers von Mozilla finden.
Bekannte Anwendungen von Mozilla sind Mozilla Firefox oder auch Thunderbird. Mozilla legt Wert auf Datenschutz und Sicherheit.
Auch deshalb sind viele Anwendungen quelloffen (= open source
), wie auch dieser PDF-Reader.
Die Datei, welche ich herausgesucht habe, existierte früher in einem anderen Ordner unter einem anderen Namen. Welcher könnte das gewesen sein?
flag{ordner/alterName.js}
https://github.com/mozilla/pdf.js/blob/master/src/pdf.js
Lösung (zum Anzeigen hier klicken)
Bunte Mischung
Diese Farben ergeben zusammen das Lösungswort:
Lösung (zum Anzeigen hier klicken)
- 102 => f
- 108 => l
- 97 => a
- 103 => g
- 123 => {
- 98 => b
- 117 => u
- 110 => n
- 116 => t
- 101 => e
- 95 => _
- 102 => f
- 108 => l
- 97 => a
- 103 => g
- 103 => g
- 101 => e
- 125 => }
Somit lautet die Flag flag{bunte_flagge}.
Minecraft
Hallo Hacker-Freunde,
ich schaue mir in letzter Zeit gerne einige Videos von LiveOverflow, einem tollen Hacker, an.
Er hat auch eine Minecraft-Serie erstellt und ich benötig die textures.minecraft.net URL,
um einen LiveOverflow-NPC auf meinem Server zu spawnen.
Eine minecraft-textures URL könnte so aussehen:
http://textures.minecraft.net/texture/a26d3c1ddd9af3cf973457c441f36a65b0e118b344df9dd7c1309e425c09e57
Bitte findet die richtige URL, damit ich einen LiveOverflow auf meinem Server haben kann :).
Lösung (zum Anzeigen hier klicken)
Roboter
Webmaster können mit einer bestimmten Textdatei (welche normalerweise im Webroot liegt: xyz.de und nicht wie hier: xyz.de/asdf; [hier nur Proof-of-Concept -> bei dieser Challenge liegt sie nicht im Webroot]) Suchmaschinen mitteilen, welche Seiten bei der Suche nicht auftauchen sollen.
Dies sind in der Regel Seiten, welche uninteressant für normale Nutzer sind oder auch welche, die sie nicht sehen sollen.
Ein Beispiel hierfür wäre eine Loginseite, bei der man in eine Administrator-Oberfläche kommt.
Auch hier liegt eine solche Datei.
Finde die vor Suchmaschinen versteckte Seite und erlange somit die Flag!
Lösung (zum Anzeigen hier klicken)
robots.txt
und befindet sich in diesem Fall bei regiomontanus-gymnasium.de/advents-hacking/robots.txt
. Darin ist ein Eintrag enthalten, der allen Robotern den Zugriff auf /ihr_haettet_die_url_nicht_erraten.txt
verbietet. Wenn man die URL regiomontanus-gymnasium.de/advents-hacking/ihr_haettet_die_url_nicht_erraten.txt
aufruft, dann erhält man die Flag: flag{oder_doch?} $H
Deine Aufgabe ist es, von dieser Unix-Shell aus mit dem gegebenen Passwort auf einen anderen Rechner zuzugreifen und dann die Flag auszulesen. (Es werden nur einige Kommandos unterstützt, da diese Shell keine echte Shell, sondern lediglich eine Simulation ist.)
Lösung (zum Anzeigen hier klicken)
ls
auflisten kann: hosts.txt
und passwords.txt
. Mit den Befehlen cat hosts.txt
und cat passwords.txt
kann man deren Inhalte jeweils auslesen. Einer der verfügbaren Befehle, die bei der Eingabe von help
ausgegeben werden, ist nmap
. Damit kann man einen anderen Rechner auf dort laufende Serverdienste untersuchen. In hosts.txt
ist die IP-Adresse 192.168.13.37
aufgeführt. Dass auf dem dieser IP-Adresse zugehörigen Rechner ein SSH-Server läuft, kann man an der Ausgabe von nmap 192.168.13.37
erkennen. Über SSH anmelden kann man sich mit dem Befehl ssh admin@192.168.13.37
. Den Benutzernamen (admin
) und das einzugebende Passwort (vBAxB5mJ
) kann man in der Datei passwords.txt
finden. Nach dem Anmelden hat man mit der Shell Zugriff auf den anderen Rechner. Im Home-Verzeichnis befindet sich die Datei flag.txt
, deren Inhalt mit cat flag.txt
lesen kann: flag{Portscan}. Unsichtbare Tinte
Vorteile solcher Dateien sind laut Erfindern, dass man beim Ausdrucken Tinte spart.
Lösung (zum Anzeigen hier klicken)
Skid
In der Datei findet ihr einen Auszug eines CSS-Stylesheets.
CSS-Dateien werden zur Formatierung von Webseiten (Text, Hintergrund, etc.) verwendet.
Diese Datei sieht jedoch sehr verdächtig aus, ich vermute, der Inhalt wurde geklaut... Doch woher?
Bitte gib den exakten Pfad zur echten Datei im GitHub-Repository im Format flag{URL} ein.
Bsp.: flag{https://github.com/group/repo/stylesheets/style.scss}
Lösung (zum Anzeigen hier klicken)
// TitleBar support
sucht, findet man die URL der Datei auf GitHub: flag{https://github.com/signalapp/Signal-Desktop/blob/main/stylesheets/components/App.scss}. Gommemode
Heyho Minecraftfreunde,
Ich habe mal wieder auf einem Minecraft-Server gespielt.
Auf einem der größten deutschen Server, um genauer zu sein.
Ich habe etwas PvP in einem FFA-Modus gespielt und bin auf die Hüte-Sammlung gestoßen (siehe Bild).
Auf welcher Karte habe ich gespielt? (Name der Karte gesucht; Flag ist in Großbuchstaben anzugeben)
Lösung (zum Anzeigen hier klicken)
Hacker-Bild
Wie lautet der volle Name des Autors? (z.B. flag{Rainer_Zufall})
Lösung (zum Anzeigen hier klicken)
AES
Dieser String wurde mit der sehr bekannten Verschlüsselungsmethode AES (Advanced Encryption Standard) mit dem Cipher Mode ECB und dem Passwort _AES_Secret_Key_ (Key Size: 128 bits) verschlüsselt:
Lösung (zum Anzeigen hier klicken)
IEC
Wie viel Bits sind 1337MiB genau?
Lösung bitte im Format flag{12345678901} angeben.
Lösung (zum Anzeigen hier klicken)
Bonus
Hier ist die Flag vielleicht nicht ganz so obvious wie bei der vorherigen Obv.-Challenge, da die JavaScript-Datei noch mehr obfuscated ist. Zum Ausführen kannst du deine Browser-Konsole oder NodeJS verwenden.
Da es sich um eine optionale Bonusaufgabe handelt, werden für diese Challenge keine Punkte vergeben. Für diese Aufgabe ist keine Lösung verfügbar.