Anleitungen
Installation
Damit das Spiel auf jenem Computer spielbar ist, müssen zuerst gewisse Programme auf dem System vorhanden sein und manche Einstellungen konfiguriert werden.
Zu diesen Programmen gehören Docker und bei Windows noch das WSL. Unten wird beim jeweiligen Tab für Windows, MacOS und Linux erklärt, wie man die benötigten Dinge installiert.
- Windows
- MacOS
- Linux
Für Windows muss man sich zuerst das Windows Subsystem for Linux installieren, da Docker dieses auf dem System benötigt, um laufen zu können. Wie dies gemacht wird, ist in der offiziellen Dokumentation von Microsoft ersichtlich.
Dabei muss man beachten, dass man die Version 2 installiert, da die Version 1 nicht von Docker verwendet werden kann.
Nachdem das WSL erfolgreich installiert wurde, kann man Docker Desktop installieren. Für dies gibt es auch eine offizielle Anleitung von Docker. Diese soll wieder befolgt werden. Sobald alles installiert ist, können die weiteren Anleitungen (unten) für das Spiel befolgt werden, um fortzufahren.
Für MacOS muss nur Docker Desktop installiert werden. Es gilt zu beachten, dass es zwei separate Anleitungen gibt. Die einte ist für Geräte mit einer Intel-CPU, die andere für Geräte, welche schon eine Apple silicon CPU haben.
Am einfachsten kann man herausfinden, welche CPU man hat, indem man eine kurze Internetrecherche über das Modell des Geräts durchführt.
Sobald man weiss, ob man nun eine Intel- oder Apple silicon CPU hat, kann man sich über die Installation von Docker Desktop für MacOS bei der offiziellen Anleitung von Docker informieren. Sobald alles installiert ist, können die weiteren Anleitungen (unten) für das Spiel befolgt werden, um fortzufahren.
Bei Linux sieht die ganze Sache ein wenig anders aus, als bei Windows und MacOS. Man braucht theoretisch kein Docker Desktop, sondern nur die Docker Engine (welche bein Docker Desktop mit inbegriffen ist). Es gibt zwar eine Version von Docker Desktop für Linux, diese ist aber für unseren Usecase nicht relevant, da es einfacher ist die Befehle aus dieser Anleitung zu kopieren.
Bei Bedarf, kann Docker Desktop installiert werden, aber wir empfehlen die folgenden Befehle einzugeben, um nur die Docker Engine zu installieren.
Die folgenden Befehle sind mit einem Package Manager namens Advance Packaging Tool (apt) und BASH vorgezeigt. Um einen anderen Package Manager zu verwenden, ist eigenständige Recherche benötigt. (Der Ablauf ist jedoch ähnlich und das Resultat praktisch überall gleich.)
Um allfällige, bisher installierte Versionen von Docker zu entfernen:
sudo apt-get remove docker docker-engine docker.io containerd runc
Updates am Package Manager durchführen
sudo apt-get update
Aktuellste Version von Docker installieren:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Testen, ob Docker richtig installiert wurde:
sudo docker run hello-world
Wenn folgende (oder ähnliche) Nachricht ausgegeben wird, ist alles in Ordnung. Das Spiel kann angefangen werden.
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Bruteforce
Aufgabenstellung
Das Ziel ist, die Flagge zu finden. Diese sieht so aus: flag{bruteforce_challenge} Um an die Flagge heranzukommen, muss ein Pin zwischen 0 und 9999 gefunden werden. Deine Aufgabe ist es dies zu tun, indem du eine Bruteforce-Methode anwendest.
Das Level ist überwunden, wenn folgende Flagge gefunden wurde:
flag{bruteforce_challenge}
Zusätzliche Informationen:
- Es wurde OpenSSL zum Verschlüsseln der Flagge verwendet.
- aes-256-cbc wurde als Methode genommen.
- Der Pin muss nicht unbedingt vierstellig sein.
- Das zu entschlüsselnde File befindet sich im Filesystem des Containers unter /home/root
- Es wird nicht BASH im Container verwendet, sondern die Alpine Shell.
- Vergiss nicht Rechte an auszuführende Dateien auszuteilen! (
chmod +x meineDatei.bsp
)
Um zu starten:
docker run -it --name ash mnaray/bruteforce:latest
Hilfestellungen
1. Hinweis
Bei der Verwendung vom openssl-Befehl ist zu beachten, dass die Ver- und Entschlüsselung auf einer binären Ebene geschieht. Damit du das Resultat dann auch lesen kannst, muss -a
im Befehl verwendet werden. Dies en(t)kodiert die Ausgabe zu Base-64.
2. Hinweis
Schau auf den Namen dieser Aufgabenstellung. Was ist der Titel? Google was es ist. Vergiss nicht, dass der geheime Pin sich zwischen 0 und 9999 befindet.
3. Hinweis
Am schnellsten geht es, ein Script zu schreiben, welches die Arbeit vom Ausprobieren aller Optionen für dich übernimmt. Es muss aber nicht unbedingt ein Script sein, es gibt sonst auch noch viele Bibliotheken und Tools, mit denen so etwas gemacht werden kann.
Hier ist es einfacher ein kurzes Script zu schreiben, da es nur 10000 mögliche Kombinationen für den Code gibt. In einer Situation, in der es vielleicht sogar milliarden von Optionen gibt, ist z.B. ein Bruteforcing-Tool empfehlenswert.
SQL-Injection
Aufgabenstellung
Das Ziel ist, die Flagge zu finden. Diese sieht so aus: flag{sql_injection_challenge} Um an die Flagge heranzukommen muss das Login via einer SQL-Injection umgangen werden.
Das Level ist überwunden, wenn folgende Flagge gefunden wurde:
flag{sql_injection_challenge}
Zusätzliche Informationen:
- Es darf nicht mit einer direkten auf die Datenbank zugegriffen werden.
- Du sollst dich als "admin" einloggen.
- Das Passwort soll nicht geraten werden. Es gilt das Login zu umgehen.
- Es laufen zwei Container in einem Netzwerk; die Datenbank und die Node-Laufzeit (Webserver)
- Die Container müssen mit
docker-compose
gestartet werden.
Um zu starten:
Erstelle eine Datei mit dem Namen docker-compose.yaml
.
In diese Datei sollst du folgenden Inhalt einfügen:
version: '3.8'
services:
database:
image: mnaray/sql_injection_db:latest
container_name: usersdb
restart: always
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=true
server:
image: mnaray/sql_injection_server:latest
container_name: server
restart: always
depends_on:
- database
links:
- database
ports:
- "80:80"
Sobald du den Inhalt eingefügt hast, navigiere mit der Kommandozeile an den Ort der Datei.
Dort sollst du folgenden Befehl ausführen:
docker-compose up -d
Es kann ein wenig dauern bis alles ausgeführt wurde, wenn du die Dockerimages noch nicht auf deinem Gerät hast. Das ist nicht schlimm, es wird alles automatisch heruntergeladen und installiert, wenn der Inhalt von der docker-compose-Datei stimmt.
Wenn alles vollständig hochgefahren ist, kannst du nun einen beliebigen Browser öffnen und http://localhost
als URL eingeben. Es soll sich eine einfache Loginseite öffnen, welche der Startpunkt der Challenge ist. Dort kannst du dann versuchen, das Login zu umgehen und dich als "admin" anzumelden.
Hilfestellungen
1. Hinweis
Weisst du was SQL-Injection ist? Falls nicht, dann sollst du dich kurz informieren und versuchen die gefundenen Informationen im nächsten Schritt anzuwenden.
Schreibe dir eine Query auf, die möglicherweise verwendet wird, um die Datenbank nach den Logindaten abzufragen. Wie kannst du nun diese Query mit (zum Beispiel) den Eingabefeldern manipulieren?
2. Hinweis
Die eigentliche Injection findet hier im Passwortfeld statt. Der Nutzername soll "admin" sein.
3. Hinweis
Die Query im für das Loginfenster sieht so aus:
SELECT username, password FROM users
WHERE username = '[Eingabe Nutzername]'
HAVING password = '[Eingabe Passwort]';