• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

ngb Capture The File-Team / Wargame-Team

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
Hallo zusammen,

ich bin vor einiger Zeit auf ein paar Wargames gestoßen und habe wenig später auch von meiner Uni aus an einigen Capture The Flag-Challanges teilgenommen. Ich persönlich hatte an den Aufgaben meinen Spaß und würde das gerne fortführen und habe mir gedacht, dass man hier im ngb mit Sicherheit auch ein paar Leute findet, die ebenfalls Spaß an sowas haben.

Für die, denen weder Wargame noch Capture The File etwas sagt:
Soweit ich das bisher mitbekommen habe, bezeichnet beides dasselbe. Hin und wieder wird von verschiedenen Clubs oder Gruppierungen im Internet ein solches Event veranstaltet, welches aus mehreren Challanges (Leveln) besteht. Ziel ist es, grob gesagt, Sicherheitslücken aufzuspüren und auszunutzen, um an ein Kennwort o.Ä. zu kommen. Gewinnen tut entweder das Team, das am schnellsten alle Level erledigt hat, oder das mit den meisten Punkten, die man durch das Lösen einer Challange bekommt.

Wer sich für das Thema interessiert und erst einmal reinschnuppern möchte, kann sich beispielsweise Natas angucken (besonders einsteigerfreundlich).
[Edit: falschen link, Anfängerwargame ist hier zu finden: http://www.overthewire.org/wargames/bandit/]

Ansonsten würde ich es schön finden, wenn sich ein paar Leute finden lassen, die sowas gemeinsam angehen möchten. Gerne auch erst einmal ältere Wargames, denn ich selbst habe auch noch nicht allzu viel Erfahrung, sodass man im Team dann erst einmal Wissen gewinnen kann, bevor wir uns an aktuelle Challanges wagen.


Daher einfach mal meine Frage in den Raum: Wer hätte den grundsätzlich Lust, mit mir zusammen ein inoffizielles ngb-Team zu gründen?
 
Zuletzt bearbeitet:

Kenobi van Gin

Brillenschlange

Registriert
14 Juli 2013
Beiträge
3.620
Ort
.\
Leider scheitere ich schon beim dritten Level. Hab absolut keine Ahnung von sowas. Gibts denn in der Richtung irgendwo Tutorials bzw. Material zum Einlesen für blutige Einsteiger?
 

Fhynn

Wird jetzt vernünftig.
Veteran

Registriert
13 Juli 2013
Beiträge
12.937
In das Dritte Level? :D das doch einfach.

quelltext
-> ah ein bild
-> ah das liegt in /files
-> ah mal /files aufrufen
-> oh eine users.txt
-> ein passwort!
 

godlike

Warp drölf
Veteran

Registriert
13 Juli 2013
Beiträge
14.327
Ort
Topkekistan
Arr ich Depp!

Klar hab ich das Bild gefunden. Hab es umbenannt, mit dem HEX-Editor geöffnet, mir überlegt wie man da Informationen speichern könnte aber nix! :D
 

epiphora

aus Plastik
Veteran

Registriert
14 Juli 2013
Beiträge
3.894
Ort
DE-CIX
Ich suche das Passwort, um vom 5. ins 6. Level zu kommen.

Meine bisherigen Ideen:
Hab bereits probiert, ein Cookie zu schicken und mir sessionid=1 oder session_id=1 zuzuweisen, aber das klappt nicht.
Hat jemand einen Tipp?

Erledigt, hab's schon! :D
 
Zuletzt bearbeitet:

Kugelfisch

Nerd

Registriert
12 Juli 2013
Beiträge
2.342
Ort
Im Ozean
Um regelmässig an solchen Wargames/CTFs teilzunehmen fehlt mir die Zeit, doch die von dir verlinkten sind durchaus interessant, wenn auch relativ einfach ;)
27 (natas): 55TBjpPZUUJgVP5b3BnbG6ON9uDPVzCJ
24 (bandit): UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
  • Thread Starter Thread Starter
  • #9
Leider scheitere ich schon beim dritten Level. Hab absolut keine Ahnung von sowas. Gibts denn in der Richtung irgendwo Tutorials bzw. Material zum Einlesen für blutige Einsteiger?

Richtige Tutorials gibt es in dem Sinne nicht, soweit ich weiß. Bei Bandit bekommt man aber zumindest die richtigen Befehle nahegelegt, die man zur Bewältigung der Aufgabe nutzen kann und über Google lassen sich zu fast allen halbwegs alten Challanges auch Writeups finden...


Um regelmässig an solchen Wargames/CTFs teilzunehmen fehlt mir die Zeit, doch die von dir verlinkten sind durchaus interessant, wenn auch relativ einfach ;)

Dass du damit keine Probleme haben wirst, habe ich mir schon fast gedacht *g* Durch dich könnte man beispielsweise eine Menge über die Schwachstellen lernen, wenn du ab und zu im Team an sowas arbeiten möchtest, denke ich.
Ich würde dir nun eigentlich den Link zur diesjährigen hack.lu geben, doch die Challanges scheinen schon gar nicht mehr aufrufbar zu sein. Ob die schwerer waren als Natas oder Bandit, weiß ich nicht, aber zumindest sind die Themengebiete gefächert: Exploiting, Web, Crypto, und noch ein paar weitere, glaub ich. Falls dich dennoch interessieren sollte, was dort so gemacht wurde, kannst du dir ja mal ein paar Writeups ansehen ;)

Aber zum Zeitaspekt (auch an alle anderen gerichtet): Wenn ein Wargame oder CTF ansteht, wird natürlich niemand verpflichtet, mitzumachen, sondern jeder macht es eben so wie er Lust und Zeit hat. Es wäre also schon eine lockere Angelegenheit, wenngleich ich es für meinen Teil natürlich begrüßen würde, wenn man einen festen Kreis von grundsätzlich Interessierten hat :)
 

antu

NGBler

Registriert
11 Nov. 2013
Beiträge
396
Ort
/home/antu
Ich finde das Thema auch interessant und hätte auch Interesse mitzumachen (je nachdem wie ich Zeit habe). :)

Wir können ja erst mal, wie du vorgeschlagen hast, gemeinsam ein paar ältere Wargames angehen und die Lösungen/Lösungswege hier sammeln, für diejenigen die nicht weiterkommen.

An dem Bandit-Wargame hab ich mich mal versucht, da stehen ja noch viele hilfreiche Tipps in den Aufgabenstellungen, bei Natas bin ich nur bis Level 2 oder 3 gekommen. :D

Hier mal meine Lösungen für Bandit:

Bandit Level 0:
Per SSH auf den Server bandit.labs.overthewire.org verbinden, Benutzername/Kennwort sind bandit0/bandit0. Dazu kann man unter Linux ssh verwenden oder unter Windows PuTTY.
[src=bash]ssh bandit0@bandit.labs.overthewire.org[/src]
Das Kennwort für das nächste Level steht in der Datei "readme" im Home-Verzeichnis, man kann es sich mit cat anzeigen lassen:
[src=bash]cat readme[/src]

Lösung: boJ9jbbUNNfktd78OOpsqOltutMc3MY1

Bandit Level 1:
Jetzt muss man sich wieder neu mit SSH verbinden, diesmal aber mit dem Benutzernamen bandit1 und der Lösung von Level 0 als Kennwort.
[src=bash]ssh bandit1@bandit.labs.overthewire.org[/src]
Das Problem hier ist, dass das Kennwort in einer Datei mit dem Namen - (Bindestrich) gespeichert ist. Der Bindestrich wird von Kommandozeilenprogrammen aber meist verwendet um Aufrufparameter anzugeben, wenn man also z.B. einfach
[src=bash]cat -[/src]
schreibt, klappt das nicht.

Der Trick ist, einfach einen Pfad anzugeben, z.B. so:
[src=bash]cat ./-[/src]

Lösung: CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

Bandit Level 3:
Auch hier ist das Kennwort wieder in einer Datei im Home-Verzeichnis gespeichert, nur diesmal sind Leerzeichen im Dateinamen. Gibt man einfach cat spaces in this filename ein, denkt cat, dass es den Inhalt der Dateien spaces, in, this und filename ausgeben soll. Man muss cat also mitteilen, dass die Leerzeichen Teil des Dateinamens sind. Das geht entweder indem man den ganzen Dateinamen in Anführungszeichen setzt, oder vor jedes Leerzeichen noch ein \ schreibt. Man kann auch einfach "cat spa" schreiben und Tab drücken, dann füllt die Bash den Rest des Dateinamens alleine aus.
[src=bash]cat spaces\ in\ this\ filename[/src]
oder
[src=bash]cat "spaces in this filename"[/src]

Lösung: UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

Bandit Level 4:
Diesmal befindet sich das Kennwort in einer versteckten Datei namens ".hidden" im Verzeichnis "inhere". Unter Linux/Unix werden Dateien die mit einem Punkt anfangen standardmäßig ausgeblendet/versteckt. Wenn man also "ls inhere" eingibt, wird die Datei nicht angezeigt, mit dem Parameter "-a" kann man ls aber mitteilen, dass man auch unsichtbare Dateien sehen will.
[src=bash]ls -a inhere[/src]
Das Kennwort kann man sich mittels folgendem Befehl anzeigen lassen:
[src=bash]cat inhere/.hidden[/src]

Lösung: pIwrPrtPN36QITSp3EQaw936yaFoFgAB

Bandit Level 5:
Auch bei diesem Level befindet sich das Kennwort in einer Datei im "inhere"-Verzeichnis. Allerdings gibt es insgesamt 10 Dateien von "-file00" bis "-file09" in dem Verzeichnis, 9 dieser Dateien enthalten Binärdaten und nur eine enthält das Kennwort. Mein erster Versuch war, einfach erst mal den Inhalt aller Dateien auszugeben mit:
[src=bash]cat inhere/*[/src]
Das war keine so gute Idee, denn durch die Binärdaten bzw. enthaltene Steuerzeichen ist die Bash verwirrt worden und funktioniert nicht mehr richtig, hier hilft es "reset" einzugeben (einfach eingeben und Enter drücken, auch wenn es nicht angezeigt wird), dadurch wird die Bash "repariert". Ich habe nach einem Weg gesucht, nur die druckbaren Zeichen in einer Datei anzuzeigen, dafür kann man den "strings"-Befehl benutzen.
[src=bash]strings inhere/*[/src]

Das Kennwort steht in der Datei "inhere/-file07".

Lösung: koReBOKuIDDepwhWk7jZC0RTdopnAYKh

Bandit Level 6:
In diesem Level ist das Kennwort in einer Datei versteckt, die laut Aufgabenstellung 1033 Bytes groß, menschenlesbar und nicht ausführbar ist. Das Problem: Es gibt in diesem Level 180 Dateien, verteilt über mehrere Verzeichnisse. Es wäre ziemlich mühselig die alle per Hand zu durchsuchen, aber mit den Angaben aus der Aufgabenstellung kann man nach der richtigen Datei suchen:
[src=bash]find inhere/ -type f -size 1033c[/src]
Dabei wird im Verzeichnis inhere nach einer Datei ("-type f") gesucht, die 1033 Bytes groß ist ("-size 1033c"), die Suchparameter für find sind in der Handbuchseite von find zu finden ("man find").

Die gesuchte Datei ist: inhere/maybehere07/.file2

Lösung: DXjZPULLxYr17uwoI01bNLQbtFemEgo7

Bandit Level 7:
In diesem Level ist das Kennwort in einer Datei irgendwo auf dem Server versteckt, aus der Aufgabenstellung erfahren wir, dass die Datei 33 Bytes groß ist und dem Benutzer bandit7 sowie der Gruppe bandit6 gehört. Auch hier wird wieder find verwendet, um die Datei zu finden. Da find aber das ganze Dateisystem durchsuchen muss, und find immer wenn es auf eine Datei/ein Verzeichnis nicht zugreifen kann (aufgrund mangelnder Rechte) "Permission denied" ausgibt, geht die gefundene Datei leicht zwischen den ganzen "Permission denied"-Meldungen unter. Man kann die Bash allerdings anweisen Fehlermeldungen wegzuwerfen, indem man "2>/dev/null" an den Befehl anhängt.
[src=bash]find / -user bandit7 -group bandit6 -size 33c 2>/dev/null[/src]
Die gesuchte Datei heißt "/var/lib/dpkg/info/bandit7.password".
[src=bash]cat /var/lib/dpkg/info/bandit7.password[/src]

Lösung: HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

Bandit Level 8:
Hier steht das Kennwort in der Datei data.txt im Home-Verzeichnis. In der Aufgabenstellung steht, dass das Kennwort neben dem Wort "millionth" steht (die Datei ist ziemlich groß). Hier kann man grep verwenden, um die Zeile in der Datei in der das Wort "millionth" vorkommt herauszufiltern.
[src=bash]cat data.txt | grep millionth[/src]

Lösung: cvX2JJa4CFALtqS87jk27qwqGhBM9plV

Bandit Level 9:
Auch in dieser Aufgabe steht das Kennwort in der Datei data.txt im Home-Verzeichnis. Die Datei hat 1001 Zeilen und jede Zeile ist ein potentielles Kennwort. Laut Aufgabenstellung ist das Kennwort die einzige Zeile die nicht mehrfach in der Datei vorkommt.

Zu erst habe ich mir den Inhalt der Datei anzeigen lassen:
[src=bash]cat data.txt[/src]
Dann habe ich die Zeilen mal sortiert, dabei fällt auf das viele Zeilen den gleichen Inhalt haben.
[src=bash]cat data.txt | sort[/src]
Mit dem Programm "uniq" kann man Zeilen herausfiltern die nur einmal vorkommen, dazu nutzt man den Parameter "-u".
[src=bash]cat data.txt | sort | uniq -u[/src]
Die Zeile mit dem Kennwort wird dann angezeigt.

Lösung: UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

Bandit Level 9:
Wieder steht das Kennwort in der Datei data.txt im Home-Verzeichnis. Aus der Aufgabenstellung erfährt man, dass das Kennwort in einer Zeile steht die mit einem Gleich-Zeichen anfängt. Wieder enthält die Datei Binärdaten, die es herauszufiltern gilt (strings). Die Zeilen, die mit einem Gleich-Zeichen beginnen, kann man mit grep und einem regulären Ausdruck herausfiltern.
[src=bash]strings data.txt | grep -E '^='[/src]

Lösung: truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

Bandit Level 10:
Wieder steht das Kennwort in der Datei data.txt im Home-Verzeichnis. Aus der Aufgabenstellung erfährt man, dass die Datei base64-kodiert ist. Man kann die Datei mittels "base64 -d" dekodieren.
[src=bash]cat data.txt | base64 -d[/src]

Lösung: IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

Bandit Level 11:
Wieder steht das Kennwort in der Datei data.txt im Home-Verzeichnis. Aus der Aufgabenstellung erfährt man, dass alle Buchstaben um 13 Zeichen rotiert wurden.

Mit cat kann man den Inhalt der Datei anzeigen:
[src=bash]cat data.txt[/src]
Alle Buchstaben wurden jedoch um 13 Positionen im Alphabet verschoben, um das Rückgängig zu machen, kann man tr benutzen. Mit tr kann man Zeichen durch andere Zeichen ersetzen, die Syntax ist relativ einfach:
[src=bash]tr <Zeichen die ersetzt werden sollen> <Neue Zeichen>[/src]
Dabei kann man auch Zeichenfolgen angeben (getrennt durch Bindestrich), damit man nicht so viel tippen muss. Man ersetzt einfach die verschobenen Buchstaben durch die richtigen Buchstaben, also A wird durch N ersetzt, B durch O, usw.
[src=bash]cat data.txt | tr 'A-Z' 'N-ZA-M' | tr 'a-z' 'n-za-m'[/src]

Lösung: 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

Bandit Level 12:
Langsam wird es etwas schwieriger. Wieder steht das Kennwort in der Datei data.txt im Home-Verzeichnis. Aus der Aufgabenstellung erfährt man, dass es sich bei der Datei um ein Hexdump einer mehrfach komprimierten Datei handelt.

Zu erst wird ein Verzeichnis im /tmp-Verzeichnis erstellt, da wir im Home-Verzeichnis keine Dateien erstellen können. Dann wird die data.txt in das Verzeichnis verschoben.
[src=bash]mkdir /tmp/<Belieberiger Name>
cd /tmp/<Beliebiger Name>
cp /home/bandit12/data.txt .[/src]

Bei der Datei handelt es sich um einen Hexdump, der mittels xxd erstellt wurde. Mit "xxd -r" lässt sich der Hexdump wieder zurück konvertieren zu den Binärdaten.
[src=bash]cat data.txt | xxd -r > data[/src]
Die Binärdaten stehen jetzt in der Datei "data". Mit dem file-Programm kann man jetzt herausfinden um was für Daten es sich handelt:
[src=bash]file data[/src]
Ergebnis:
data: gzip compressed data, was "data2.bin", from Unix, last modified: Thu Jun 6 13:59:44 2013, max compression
Es handelt sich also um eine Datei die mittels gzip komprimiert wurde. Mittels gunzip können die Daten wieder dekomprimiert werden. Anschließend wird wieder mit file überprüft um was für Daten es sich handelt.

[src=bash]cat data | gunzip > dekomprimiert
file dekomprimiert[/src]
Ergebnis:
dekomprimiert: bzip2 compressed data, block size = 900k

Mit bzip2 komprimierte Daten können mit bunzip2 dekomprimiert werden:

[src=bash]cat dekomprimiert | bunzip2 > dekomprimiert2
file dekomprimiert2[/src]
Es handelt sich wieder um eine mit gzip komprimierte Datei.

[src=bash]cat dekomprimiert2 | gunzip > dekomprimiert3
file dekomprimiert3[/src]

Die dekomprimierte Datei ist ein TAR-Archiv. Mittels "tar -tf <Archiv>" kann man sich den Inhalt eines TAR-Archives ansehen:
[src=bash]tar -tf dekomprimiert3[/src]

In dem Archiv befindet sich eine Datei namens data5.bin. Die wird entpackt:
[src=bash]tar -xf dekomprimiert3
file data5.bin[/src]
Es handelt sich wieder um ein TAR-Archiv, nachdem der Inhalt mit "tar -tf data5.bin" überprüft wurde, wird das Archiv ebenfalls entpackt.
[src=bash]tar -xf data5.bin
file data6.bin[/src]
Wieder eine bzip2-komprimierte Datei.

[src=bash]cat data6.bin | bunzip2 > data6.dekomprimiert
file data6.dekomprimiert[/src]
Wieder ein TAR-Archiv.

[src=bash]tar -xf data6.dekomprimiert
file data8.bin[/src]
Wieder eine gzip-komprimierte Datei.

[src=bash]cat data8.bin | gunzip > data8.dekomprimiert
file data8.dekomprimiert[/src]
Dieses mal handelt es sich um eine Textdatei, und in dieser findet sich das Kennwort für das nächste Level.
[src=bash]cat data8.dekomprimiert[/src]

(Man kann die angelegten Dateien am Ende auch wieder entfernen per "rm -r /tmp/<Beliebiger Name>").

Lösung: 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

Damit wäre schon mal die Hälfte geschafft. :) Mal sehen, vielleicht mach ich die Tage noch weiter.
 

Kugelfisch

Nerd

Registriert
12 Juli 2013
Beiträge
2.342
Ort
Im Ozean
Ich bin übrigens gerne auch bereit, Tipps zu den beiden genannten Wargames zu posten, allerdings nur auf explizite Anfrage, da man sich dadurch den Spass sehr leicht verdirbt. Falls ihr nicht weiterkommt, postet einfach das Flag (Passwort), die Level-Nummer und das Wargame ...
 

Annika

Dangerous Utopian
Veteran

Registriert
30 Aug. 2013
Beiträge
648
Früher war ich mal ganz gut in sowas, aber meine Skills sind wahrscheinlich etwas eingerostet. Ich werde mir in den nächsten Tagen mal die verlinkten Sachen anschauen.
 

antu

NGBler

Registriert
11 Nov. 2013
Beiträge
396
Ort
/home/antu
Weiter gehts. :)

Bandit Level 13:
In diesem Level findet sich im Heimatverzeichnis eine Datei namens "sshkey.private". Diese enthält einen privaten SSH-Schlüssel der für das nächste Level benötigt wird. Den Schlüssel kann man entweder anzeigen und per Kopieren+Einfügen kopieren, oder man kopiert ihn per SCP auf den lokalen Rechner.
[src=bash]# Auf dem lokalen Rechner ausführen!
scp bandit13@bandit.labs.overthewire.org:/home/bandit13/sshkey.private .[/src]

Um den Schlüssel mit SSH zu verwenden, kann der Parameter -i verwendet werden. Vorher müssen möglicherweise noch die Berechtigungen der Schlüsseldatei geändert werden, SSH mag es nämlich (logischerweise) nicht, wenn andere Benutzer auf einen privaten SSH-Schlüssel zugreifen können.
[src=bash]chmod 0600 sshkey.private[/src]
Anschließend kann man sich zum nächsten Level verbinden.
[src=bash]ssh bandit14@bandit.labs.overthewire.org -i sshkey.private[/src]
Erhält man folgende Meldung, müssen wie oben beschrieben, die Berechtigungen angepasst werden.
[src=text]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'sshkey.private' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sshkey.private[/src]

Das Kennwort befindet sich in der Datei /etc/bandit_pass/bandit14.

Lösung: 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Bandit Level 14:
Aus der Aufgabenstellung erfährt man, dass man das Kennwort von Level 14 (welches sich in der Datei /etc/bandit_pass/bandit14 befindet) an Port 30000 auf localhost senden soll, um das Kennwort für das nächste Level zu erhalten.

Dazu kann man telnet verwenden. Um sich per telnet auf Port 30000 auf localhost zu verbinden, verwendet man folgenden Befehl:
[src=bash]telnet localhost 30000[/src]
Anschließend gibt man das Kennwort von Level 14 ein, und erhält dann das Kennwort für das nächste Level.
[src=text]bandit14@melinda:~$ telnet localhost 30000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Correct!
BfMYroe26WYalil77FoDi9qh59eK5xNr

Connection closed by foreign host.[/src]

Lösung: BfMYroe26WYalil77FoDi9qh59eK5xNr
Bandit Level 15:
Aus der Aufgabenstellung erfährt man, dass man das Kennwort für das nächste Level erhält, wenn man das Kennwort für Level 15 mit SSL verschlüsselt an Port 30001 auf localhost sendet.

Um eine SSL-verschlüsselte Verbindung aufzubauen kann OpenSSL verwendet werden. Genauer das Programm s_client von OpenSSL. Hierbei muss man beachten, die Option -ign_eof oder die Option -quiet (impliziert -ign_eof) zu verwenden, damit OpenSSL die Verbindung nicht sofort wieder schließt nachdem man das Kennwort gesendet hat.
[src=bash]openssl s_client -ign_eof -connect localhost:30001[/src]
Sobald die Verbindung aufgebaut wurde, gibt man "BfMYroe26WYalil77FoDi9qh59eK5xNr" (ohne Anführungszeichen) ein und drückt Enter. Dann wird das Kennwort für das nächste Level angezeigt.

Lösung: cluFn7wTiGryunymYOu4RcffSxQluehd
Bandit Level 16:
Aus der Aufgabenstellung erfahren wir, dass man das Kennwort des aktuellen Levels an einen Port zwischen 31000 und 32000 schicken muss. Allerdings wird nicht verraten an welchen Port genau, die meisten Ports sind geschlossen, manche schicken einfach alles zurück, was man hinschickt, und der richtige Port verwendet SSL-Verschlüsselung.

Um herauszufinden welche Ports offen sind und was für ein Dienst unter diesen Ports läuft, kann man den Portscanner nmap verwenden. Mit der -p Option kann man einen Port-Bereich angeben, der gescannt werden soll. Mit -A aktiviert man einige "aggressive" Scan-Optionen, um mehr Informationen zu erhalten.
[src=bash]nmap localhost -p 31000-32000 -A[/src]
Anhand der Ausgabe von nmap erkennt man, dass Port 31790 der gesuchte Port ist, denn nur auf diesem wird SSL-Verschlüsselung unterstützt. Es wird also wieder eine SSL-Verbindung aufgebaut:
[src=bash]openssl s_client -connect localhost:31790 -quiet[/src]
Sobald die Verbindung aufgebaut ist, muss das aktuelle Kennwort eingegeben werden. Als Ergebnis erhält man wieder einen privaten SSH-Schlüssel, den man sich auf den lokalen Rechner kopiert (in eine Textdatei einfügt) und mit den korrekten Rechten versehen muss.
[src=text]-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ
imZzeyGC0gtZPGujUSxiJSWI/oTqexh+cAMTSMlOJf7+BrJObArnxd9Y7YT2bRPQ
Ja6Lzb558YW3FZl87ORiO+rW4LCDCNd2lUvLE/GL2GWyuKN0K5iCd5TbtJzEkQTu
DSt2mcNn4rhAL+JFr56o4T6z8WWAW18BR6yGrMq7Q/kALHYW3OekePQAzL0VUYbW
JGTi65CxbCnzc/w4+mqQyvmzpWtMAzJTzAzQxNbkR2MBGySxDLrjg0LWN6sK7wNX
x0YVztz/zbIkPjfkU1jHS+9EbVNj+D1XFOJuaQIDAQABAoIBABagpxpM1aoLWfvD
KHcj10nqcoBc4oE11aFYQwik7xfW+24pRNuDE6SFthOar69jp5RlLwD1NhPx3iBl
J9nOM8OJ0VToum43UOS8YxF8WwhXriYGnc1sskbwpXOUDc9uX4+UESzH22P29ovd
d8WErY0gPxun8pbJLmxkAtWNhpMvfe0050vk9TL5wqbu9AlbssgTcCXkMQnPw9nC
YNN6DDP2lbcBrvgT9YCNL6C+ZKufD52yOQ9qOkwFTEQpjtF4uNtJom+asvlpmS8A
vLY9r60wYSvmZhNqBUrj7lyCtXMIu1kkd4w7F77k+DjHoAXyxcUp1DGL51sOmama
+TOWWgECgYEA8JtPxP0GRJ+IQkX262jM3dEIkza8ky5moIwUqYdsx0NxHgRRhORT
8c8hAuRBb2G82so8vUHk/fur85OEfc9TncnCY2crpoqsghifKLxrLgtT+qDpfZnx
SatLdt8GfQ85yA7hnWWJ2MxF3NaeSDm75Lsm+tBbAiyc9P2jGRNtMSkCgYEAypHd
HCctNi/FwjulhttFx/rHYKhLidZDFYeiE/v45bN4yFm8x7R/b0iE7KaszX+Exdvt
SghaTdcG0Knyw1bpJVyusavPzpaJMjdJ6tcFhVAbAjm7enCIvGCSx+X3l5SiWg0A
R57hJglezIiVjv3aGwHwvlZvtszK6zV6oXFAu0ECgYAbjo46T4hyP5tJi93V5HDi
Ttiek7xRVxUl+iU7rWkGAXFpMLFteQEsRr7PJ/lemmEY5eTDAFMLy9FL2m9oQWCg
R8VdwSk8r9FGLS+9aKcV5PI/WEKlwgXinB3OhYimtiG2Cg5JCqIZFHxD6MjEGOiu
L8ktHMPvodBwNsSBULpG0QKBgBAplTfC1HOnWiMGOU3KPwYWt0O6CdTkmJOmL8Ni
blh9elyZ9FsGxsgtRBXRsqXuz7wtsQAgLHxbdLq/ZJQ7YfzOKU4ZxEnabvXnvWkU
YOdjHdSOoKvDQNWu6ucyLRAWFuISeXw9a/9p7ftpxm0TSgyvmfLF2MIAEwyzRqaM
77pBAoGAMmjmIJdjp+Ez8duyn3ieo36yrttF5NSsJLAbxFpdlc1gvtGCWW+9Cq0b
dxviW8+TFVEBl1O4f7HVm6EpTscdDxU+bCXWkfjuRb7Dy9GOtt9JPsX8MBTakzh3
vBgsyi/sN3RqRBcGU40fOoZyfAMT8s1m/uYv52O6IgeuZ/ujbjY=
-----END RSA PRIVATE KEY-----[/src]

Anschließend kann man sich per SSH zum nächsten Level verbinden.
[src=bash]ssh bandit17@bandit.labs.overthewire.org -i level17.key[/src]

Lösung: xLYVMN9WE5zQ5vHacb0sZEVqbrp7nBTn
Bandit Level 17:
Aus der Aufgabenstellung erfährt man, dass im Heimatverzeichnis zwei Dateien sind, passwords.new und passwords.old. Das Kennwort ist die einzige zwischen den beiden Dateien geänderte Zeile.

Man kann das diff-Programm benutzen um die geänderte Zeile zu finden.
[src=bash]diff passwords.old passwords.new[/src]
Ergebnis:
[Src=text]42c42
< PRjrhDcANrVM6em57fPnFp4Tcq8gvwzK
---
> kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd[/src]

Lösung: kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
Bandit Level 18:
Wenn man sich zu Level 18 verbindet, wird die Verbindung direkt wieder getrennt und die Meldung "Byebye !" angezeigt. Aus der Aufgabenstellung erfährt man, dass die .bashrc so verändert wurde, dass man direkt wieder ausgeloggt wird. Die .bashrc wird immer ausgeführt wenn die Bash gestartet wird.

Man kann SSH anweisen, statt eine Shell zu starten einfach einen Befehl auszuführen, in diesem Fall benutze ich den Befehl /bin/sh um eine Kommandozeile zu erhalten.
[src=bash]ssh bandit18@bandit.labs.overthewire.org '/bin/sh'[/src]
Anschließend kann man ls eingeben, um zu sehen, dass sich im Heimatverzeichnis eine Datei namens readme befindet, diese wird dann mit cat angezeigt:
[src=bash]cat readme[/src]
Darin steht das Kennwort für das nächste Level.

Lösung: IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x
 
Zuletzt bearbeitet:

antu

NGBler

Registriert
11 Nov. 2013
Beiträge
396
Ort
/home/antu
Und hier der Rest von Bandit. :)

Bandit Level 19:
Aus der Aufgabenstellung erfahren wir, dass man die SetUID-Binary im Heimatverzeichnis verwenden soll, um an das Kennwort für das nächste Level zu kommen. Führt man die Datei ohne Argumente aus, erhält man folgenden Hinweis:
[src=text]Run a command as another user.
Example: ./bandit20-do id[/src]
Da die Datei dem Benutzer bandit20 gehört, und das SetUID-Bit gesetzt ist, wird die Datei mit den Benutzerrechten von bandit20 ausgeführt. Das Programm bandit20-do ermöglicht es einem, beliebige Befehle als bandit20 auszuführen.

Das Kennwort für das nächste Level lässt sich mit folgendem Befehl anzeigen:
[src=bash]./bandit20-do cat /etc/bandit_pass/bandit20[/src]

Lösung: GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Bandit Level 20:
Im Heimatverzeichnis befindet sich ein Programm namens suconnect, bei dem das SetUID-Bit gesetzt ist. Aus der Aufgabenstellung erfahren wir, dass es eine Verbindung zu localhost herstellt, den Port muss man als 1. Argument angeben. Das Programm liest dann 1 Zeile und vergleicht sie mit dem Kennwort von Level 20. Sollte das Kennwort übereinstimmen, sendet es das Kennwort für Level 21 zurück.

Für dieses Level sind 2 SSH-Verbindungen notwendig. In der ersten starten wir einen Server auf Port 1234 (oder irgendeinem anderen Port > 1024), der das Kennwort von Level 20 sendet.
[src=bash]nc -l 1234 < /etc/bandit_pass/bandit20[/src]
In der zweiten Verbindung starten wir suconnect und stellen eine Verbindung zum zuvor gestarteten Server her.
[src=bash]./suconnect 1234[/src]
Die Ausgabe von suconnect lautet:
[src=text]Read: GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Password matches, sending next password[/src]
Man kann die SSH-Verbindung an der Stelle wieder trennen, das Kennwort steht in der anderen SSH-Verbindung (auf der man den Server mit nc gestartet hat).
[src=text]bandit20@melinda:~$ nc -l 1234 < /etc/bandit_pass/bandit20
gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr[/src]

Lösung: gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr
Bandit Level 21:
Die Aufgabenstellung enthält den Hinweis, dass regelmäßig ein cronjob ausgeführt wird, der sich in /etc/cron.d befindet.

Dort befindet sich eine Datei namens cronjob_bandit22.
[src=bash]cat /etc/cron.d/cronjob_bandit22[/src]
Es handelt sich um folgendes Bash-Skript:
[src=bash]#!/bin/bash
chmod 644 /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
cat /etc/bandit_pass/bandit22 > /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv[/src]
Den Inhalt der Datei kann man sich anzeigen lassen, es handelt sich um das Kennwort für das nächste Level.
[src=bash]cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv[/src]

Lösung: Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI
Bandit Level 22:
Es geht wieder um einen Cronjob.
[src=bash]cat /etc/cron.d/cronjob_bandit23[/src]
Ausgabe:
[src=text]* * * * * bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null[/src]

Wieder handelt es sich um ein Shell-Skript, welches man sich per cat anzeigen lassen kann. Das Skript:
[src=bash]#!/bin/bash

myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)

echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"

cat /etc/bandit_pass/$myname > /tmp/$mytarget[/src]
Wie man sieht, schreibt das Skript das Kennwort für das nächste Level in eine Datei im /tmp-Verzeichnis. Der Name der Datei steht in der Variable mytarget.

Der Name wird hier generiert:
[src=bash]mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)[/src]
Hierbei muss man beachten, dass das Skript vom Benutzer bandit23 ausgeführt wird, man aber zur Zeit als bandit22 eingeloggt ist. Um also die gleiche Ausgabe zu erhalten wie bandit23, ersetzen wir "$myname" einfach durch "bandit23" und geben folgenden Befehl ein:
[src=bash]cat /tmp/$(echo I am user bandit23 | md5sum | cut -d ' ' -f 1)[/src]
Das Kennwort für das nächste Level wird ausgegeben.

Lösung: jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
Bandit Level 23:
Wieder geht es um einen Cronjob:
[src=bash]cat /etc/cron.d/cronjob_bandit24[/src]
Der Cronjob führt ein Shell-Skript aus, mit folgendem Inhalt:
[src=bash]#!/bin/bash

myname=$(whoami)

cd /var/spool/$myname
echo "Executing and deleting all scripts in /var/spool/$myname:"
for i in *;
do
echo "Handling $i"
./$i
rm -f $i
done[/src]
Es werden also jede Minute alle Skripte in /var/spool/bandit24 ausgeführt und gelöscht. Der Trick ist, selbst ein Shellskript dort anzulegen, welches das Kennwort ausliest und einem irgendwie zukommen lässt.

Dazu wird erstmal eine temporäre Datei angelegt und die Zugriffsrechte so angepasst, dass auch andere Benutzer (bandit24) darauf zugreifen (schreiben) dürfen.
[src=bash]mktemp
chmod 0666 <Name der temporären Datei>[/src]

Anschließend legt man unter /var/spool/bandit24 ein Shellskript an, welches das Kennwort ausliest und in die temporäre Datei schreibt.
[src=bash]vi /var/spool/bandit24/mein_skript.sh[/src]
Inhalt:
[src=bash]#!/bin/bash
cat /etc/bandit_pass/bandit24 >> /tmp/<Name der temporären Datei>[/src]
Das Shellskript muss man dann auch noch ausführbar machen.
[src=bash]chmod a+x /var/spool/bandit24/mein_skript.sh[/src]
Dann muss man kurz warten und kann dann per cat die temporäre Datei auslesen. In dieser befindet sich das Kennwort für das nächste Level.

Lösung: UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
Level 23 ist das letzte Level. Wenn man sich bei Level 24 anmeldet, steht dieser Text in der README.txt:
Congratulations on solving the last level of this game!

At this moment, there are no more levels to play in this game. However, we are constantly working
on new levels and will most likely expand this game with more levels soon.
Keep an eye out for an announcement on our usual communication channels!
In the meantime, you could play some of our other wargames.

If you have an idea for an awesome new level, please let us know!

Damit wäre Bandit geschafft. :D
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
  • Thread Starter Thread Starter
  • #16
So, ich grabe diesen Thread noch einmal aus, denn im Oktober steht das CTF-Event der hack.lu an.

Letztes Jahr habe ich daran teilgenommen, zu dem Zeitpunkt waren die Themen Kryptographie, Web, Exploiting, Reverse Engineering und noch zwei weitere, die mir gerade nicht mehr einfallen. Zu dem Zeitpunkt hatte ich in erster Linie Kenntnisse im Web-Bereich und habe aus den anderen Richtungen nur insgesamt 2-3 Challanges geschafft. Mittlerweile müsste ich ein paar mehr Sachen hinbekomme, aber dennoch glaube ich, es wäre im Allgemeinen sinnvoll, da mit einem breit gefächertem Team teilzunehmen. Vielleicht lassen sich hier ja einige Leute finden, die Lust haben, dann würde ich mich danach umschauen, ein entsprechendes ngb.to-Team anzulegen.

Beginn: 21.10. um 10 Uhr
Ende: 23.10. um 10 Uhr

Es gibt die Möglichkeit, mit seinem Team direkt vor Ort in Luxemburg an der hack.lu-Konferenz teilzunehmen, aber für das CTF ist dies nicht erforderlich und ich denke, die Chancen sinken dann auch recht schnell, dass wir hier ein paar Leute finden, die Zeit und Lust haben.
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
  • Thread Starter Thread Starter
  • #17
So, da sich bisher niemand gemeldet hat, gehe ich davon aus, dass hier kein Interesse besteht. Dann werde ich zusehen, dass ich mich einem anderen Team anschließen kann :D
 

Patroklos

NGBler

Registriert
20 Aug. 2013
Beiträge
459
Der letzte Post ist doch schon Jahre her. :confused: 09.08.14, 11:46

Ich hab mir Bandit gerade mal angeguckt. Das ist doch mal ein interessanter Zeitvertreib.
Ist von euch auch jemand im irc oder nutzt jabber? :coffee:
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
  • Thread Starter Thread Starter
  • #19
Huh? Jahre her?

Ich bin gerade im IRC, kannst mich einfach anschreiben, wenn du Lust hast

Edit:
Hier findet ihr übrigens die Challanges aus dem letzten Jahr.
 

Patroklos

NGBler

Registriert
20 Aug. 2013
Beiträge
459
Schon was länger her... ;)

Erstmal brauche ich nun Schlaf.. blöderweise..
Schaue später mal im IRC vorbei.
 
Oben