Auf dieser Seite werden die wichtigsten Fragen für CTF-Einsteiger*innen beantwortet.
Q: Wo soll ich anfangen?
A: Wir organisieren Aufgaben in Kategorien. Zum Einstig empfehlen wir die Kategorie “Sanity Check”. Diese Kategorie enthält einfachste Aufgaben, die prüfen sollen, ob euer Computer grundsätzlich einsatzbereit für das Lühack ist. Außerdem schalten sich einige Aufgaben erst frei, wenn ihr die Sanity Check Aufgaben gelöst habt. Anschließend macht ihr in den Kategorien weiter, auf die ihr Lust habt. Falls ihr bei einer Aufgabe nicht weiter kommt, sprecht mit eurem Team über die Aufgabe. Eventuell hat ja jemand anderes bereits ein ähnliches Problem gelöst. Haltet außerdem Ausschau nach Aufgaben, die bereits von vielen Teams gelöst wurden. Diese Aufgaben sind vermutlich leichter als die, die noch niemand gelöst hat.
Q: Was sind die technischen Voraussetzungen für eine Teilnahme?
A: Es sind ein Computer oder Laptop sowie ein Internetzugang erforderlich. Zwar sind vermutlich alle Aufgaben auch mit einem Smartphone oder Tablet lösbar, dies wurde jedoch nicht getestet und der Lösungsaufwand auf diesen Geräten ist vermutlich deutlich höher. Auf dem Computer oder Laptop sollte ein Windows, MacOS oder Linux laufen (siehe nächste Frage). In jedem Fall sollte die Möglichkeit bestehen, Software zu installieren oder eigene zu programmieren.
Q: Welches Betriebssystem sollte ich verwenden?
A: Die drei verbreitetsten Betriebssystemfamilien sind Windows, MacOS und Linux. Die Linux-Familie enthält verschiedene Distributionen wie z.B. Ubuntu, Debian, ArchLinux oder OpenSUSE. Alle Aufgaben sind mit allen Betriebssystemen lösbar. Allerdings kann nicht garantiert werden, dass die Lösungen unter allen Betriebssystemen gleich schwer sind. Generell sollten alle Teams das Betriebssystem nutzen, mit dem sie sich am besten auskennen. Die Mehrheit der mit dem Internet verbundenen Geräte nutzt ein Linux-Betriebssystem (die meisten Server, alle Android-Smartphones, Smart-TVs, Autos und fast alles, was “Smart” ist). Auch die CTF-Aufgaben, die eine Verbindung zu einem Server beinhalten, laufen auf Linux-Servern. Daher sind Linux-Kenntnisse in manchen Fällen hilfreich. Wer selbst ein Linux ausprobieren möchten, der/die ist vermutlich mit einem aktuellen Ubuntu gut beraten. Erfahrenere Linux-Nutzer*innen präferieren eventuell andere Distributionen. Mit einer virtuellen Maschine (VM) kann man auch ein Betriebssystem in einem Betriebssystem laufen lassen, um es auszuprobieren, ohne, dass das eigentliche Betriebssystem verändert wird. Wir werden für das Lühack25 wieder eine Ubuntu-VM aufgesetzt, die für das CTF genutzt werden kann. Die VM ist keinesfalls vollständig im Hinblick auf benötigte Programme. Jedoch können beliebige Programme nachinstalliert werden, falls sie benötigt werden. Wer die VM nutzen möchte, installiert VirtualBox und importiert die heruntergeladene VM.
Q: Wie baue ich eine TCP-Verbindung zu einem Server auf?
A: Generell ist es immer möglich, einen simplen TCP-Server selber zu schreiben.
Wer sich die Mühe sparen möchte, kann Tools wie ncat
, PuTTY ‘Raw’
oder telnet
nutzen, um eine TCP-Verbindung zu einem Server aufzubauen.
Challenges, die eine TCP-Verbindung zu einem Server beinhalten, geben die Verbindungsinformationen als Netcat-Befehl an im Format nc <Host> <Port>
an.
Beispiel:
nc challenges.sshuzl.de 12321
Wer die Nmap-Implementierung von Netcat (ncat
) nutzt, kann einfach ein selbstgeschriebenes Computerprogramm mit dem Server verbinden,
indem der Kommandozeilenparameter -c "<Befehl>"
genutzt wird.
Beispiel:
ncat -c "python my_solution_script.py" challenges.sshuzl.de 12321
Q: Wie gehe ich mit den großen Zahlen in der Kryptografie am besten um?
A: Der Computer ist ein großer Taschenrechner.
Warum also nicht den Computer nutzen?
Das beliebteste Tool von CTF-Spieler*innen für die Kategorie Crypto ist Sagemath.
Es ist in Python geschrieben und und kann auch Python-Code direkt ausführen.
Allerdings ist die Dokumentation nicht sehr gut, da sie vor allem auf Beispielen basiert.
Wer Erfahrung in Python hat, kann die Aufgaben auch direkt in Python lösen, da Python keine Maximalgröße für Zahlen kennt.
Installiert man das Python-Pakte PyCryptodomex
, ist man für alle Challenges gut gewappnet.
Es können natürlich auch Tools wie Mathematica, WolframAlpha
oder Matlab genutzt werden.
Diese kosten jedoch (in der Vollversion) Geld.
Oder wie wäre es mit GeoGebra?
Am besten nutzt ihr die Tools, die ihr bereits kennt.
Q: Wie hacke ich eine Webseite?
A: Das kommt natürlich auf die Aufgabe an.
Sehr gute Tools für den Einstieg sind tatsächlich die gängigen Browser Chromium, Firefox oder Google Chrome.
Sie haben sehr gute Entwicklertools, mit denen Webseiten untersucht werden können. Drück doch mal F12
. Darüber hinaus sind Kenntnisse über das HTTP-Protokoll und die Programmierung in JavaScript sowie das Lesen des HTML-Quelltextes sehr hilfreich.