-
Notifications
You must be signed in to change notification settings - Fork 0
ocit‐writeups
___ _ _ _ __ __ _ _
/ _ \| (_) ___ _ _| |__ ___ _ __ \ \ / / __(_) |_ ___ _ _ _ __ ___
| | | | | |/ __| | | | '_ \ / _ \ '__| \ \ /\ / / '__| | __/ _ \ | | | '_ \/ __|
| |_| | | | (__| |_| | |_) | __/ | \ V V /| | | | || __/ |_| | |_) \__ \
\___/|_|_|\___|\__, |_.__/ \___|_| \_/\_/ |_| |_|\__\___|\__,_| .__/|___/
|___/ |_|
Translated from Italian language
In dieser Challenge-Serie werden einige der Themen vorgestellt, die zur Lösung von Netzwerksicherheitsproblemen erforderlich sind. Um diese Aufgabe zu lösen, ist es notwendig zu verstehen, was eine pcap-Datei ist und wie man sie analysiert. Unter den verschiedenen Möglichkeiten, pcap-Dateien zu analysieren, ist Wireshark eine sehr empfehlenswerte Software mit einer grafischen Oberfläche. Um Wireshark auf Linux zu installieren, installieren Sie einfach das Paket aus den Standard-Repositories (z. B. sudo apt install wireshark). Windows- und macOS-Versionen sind ebenfalls verfügbar.
Das Flag für diese Challenge ist im TCP-Paket nach dem Handshake zu finden.
SOLUTION (by wasp1337): Frame 6 enthält 30B Daten --> Follow TCP-Stream --> Flag
In dieser Challenge sollen einige Pakete genauer analysiert werden. Im Einzelnen hat die Kennzeichnung das folgende Format: flag{Source_MAC_address/data_bytes_length}
Die für die Flags erforderlichen Informationen werden dem Frame Nummer 4 entnommen, dem ersten, der die Daten der TCP-Sitzung enthält.
SOLUTION (by wasp1337): Follow TCP-Stream ergibt die Anleitung für die Bildung der Flag: The flag is in the format ... Erforderliche Daten zusammensetzen --> Flag.
Dies ist die erste einer Reihe von Herausforderungen, die sich mit der Verwendung von Ausdrücken zum Filtern von pcap/pcapng-Dateien befassen, um eine reduzierte und interessantere Menge von Paketen zu erhalten.
Um die Flag für diese erste Herausforderung zu erhalten, filtern Sie einfach die Pakete nach dem Protokoll. Wenn Sie nur Pakete filtern, die das HTTP-Protokoll verwenden, finden Sie die Flagge in einem benutzerdefinierten Request-Header.
Um besser zu lernen, wie man diesen Satz von Herausforderungen löst, wird empfohlen, die entsprechende Wireshark-Dokumentation über Filterung zu lesen.
SOLUTION (by wasp1337): Filter: http --> Frame 176 --> Flag
Die Lösung dieses Problems erfordert einen logischen Ausdruck, der nach der Quell-IP-Adresse (192.168.100.3) und dem Protokoll (DNS) filtert.
SOLUTION (by wasp1337): Filter: dns and ip.src == 192.168.100.3 --> Flag
Um diese Challenge zu lösen, ist ein logischer Ausdruck erforderlich, der nach Paketen mit Kommentaren filtert.
SOLUTION (by wasp1337): Filter: frame.comment --> Flag
Die Lösung dieser Challenge erfordert einen logischen Ausdruck, der nur die Pakete auswählt, die die Zeichenfolge "Pwn all the things!!!" enthalten.
Die Flag muss dann standardmäßig wie folgt formatiert werden: flag{...}.
SOLUTION (by wasp1337): Filter: frame contains "Pwn all the things!!!" --> Flag
Diese Challenge konzentriert sich auf TCP-Konversationen (TCP Streams). Die Flag wird Zeichen für Zeichen in mehrere TCP-Pakete unterteilt, die zur selben Sitzung gehören.
Da die pcap-Datei groß ist und auch viele verstreute ICMP-Pakete enthält, besteht die effizienteste Lösung darin, die betreffende Sitzung zu filtern und vollständig anzuzeigen.
SOLUTION (by wasp1337): follow TCP Stream --> The flag is incoming... --> Flag
Diese Challenge konzentriert sich auf die Analyse und Extraktion der Bytes eines bestimmten Pakets. In dieser Capture-Datei gibt es einen kurzen Austausch von TCP-Paketen, insbesondere der Frame mit Daten, die von IP 192.168.100.1 an 192.168.100.2 gesendet werden, ist für uns von Interesse.
Um die Flag zu erhalten, müssen die Bytes dieses Pakets extrahiert und sein Inhalt analysiert werden. Weitere Informationen hierzu finden Sie in der entsprechenden Dokumentation.
SOLUTION (by wasp1337): frame 6 data --> Paketbytes anzeigen, komprimiert, als Hexdump --> Flag
SOLUTION:
SOLUTION:
This series of introductory web security challenges will introduce the HTTP protocol and the main web technologies commonly associated with it, and some simple tools for interacting with it.
The individual challenges will follow the jeopardy model, thus focusing on obtaining flags.
The examples and explanations proposed will refer to the Python language and its standard library, as well as to the requests and BeautifulSoup libraries, which we therefore recommend installing in order to best follow this path.
Installation of the recommended libraries on Debian and Ubuntu Linux
sudo apt install python3-requests python3-bs4
On Windows systems, manually install the Python interpreter obtainable from the official Python project website and run in the command prompt
pip install requests bs4
Conceived to facilitate access to hypertext documents, the HyperText Transfer Protocol HTTP is used today to transfer information of all kinds to and from remote servers over the network. This information is organised into resources, identified by address strings called URLs (Unified Resource Locators), and the basic operations that can be performed on these resources are called HTTP verbs.
The simplest of these verbs, GET, is used to obtain a resource from a remote server. The objective of this challenge is to obtain the text of the root resource from the server web-01.challs.olicyber.it, identified by the URL http://web-01.challs.olicyber.it/.
We recommend using the get function of the requests library.
Deepening: it can be observed that a URL is generally composed of a schema (in this case http) identifying the mechanism for accessing the resource, an optional Internet address including a port (web-01.challs.olicyber.it) and a path (in this case / identifying the root resource). The resources are organised in a tree structure reminiscent of that of a file system, where / is the main resource, while the child resources are identified as /resource1, /resource2, /super-resource/sub-resource, /resource/annotated/on/five/levels. This makes it possible to easily represent resources that can be decomposed into smaller parts (e.g. /users the resource representing all the users of a site, while /users/luca represents a single user, Luca).
SOLUTION (by wasp1337): just follow the link ;)
Die Anfrage für bestimmte Ressourcen kann parametrisiert werden, um bestimmte Versionen der betreffenden Ressource zu erhalten. Ein Blog könnte zum Beispiel eine einzige Ressource verwenden, um alle veröffentlichten Beiträge (die strukturell alle gleich sind und sich nur im Inhalt unterscheiden) zu repräsentieren, indem der gewünschte spezifische Inhalt über einen numerischen Parameter id identifiziert wird.
Das Ziel dieser Aufgabe ist es, die Ressource http://web-02.challs.olicyber.it/server-records zu erhalten, indem der id-Parameter mit dem Flag-Wert angegeben wird. Wir empfehlen die Verwendung des params-Schlüsselworts der in der vorherigen Aufgabe beschriebenen get-Funktion.
SOLUTION (by wasp1337): hxxp[://]web-02[.]challs[.]olicyber[.]it/server-records?id=flag
In dieser Challenge-Serie werden wir einige der Grundlagen vorstellen, die zur Lösung kryptografischer Probleme erforderlich sind. Zunächst einmal ist es gut, das Konzept der Kodierung zu verstehen. Eine Kodierung ist ein System von Signalen oder Symbolen, die üblicherweise zur Darstellung von Informationen verwendet werden. Grundsätzlich wird jede Information in einem Computer durch Folgen von 0 und 1 (Bits) dargestellt. Diese sind jedoch recht unhandlich, so dass ihnen in der Regel eine weitere Kodierung überlagert wird, wenn dies sinnvoll ist.
ASCII zum Beispiel ist ein Standardcode, der es ermöglicht, Text (und einige andere Steuerzeichen) durch Sequenzen von 7 Bits (bzw. ganze Zahlen von 0 bis 127) darzustellen.
In Python führt die Funktion chr() die Umwandlung von Zahlen in Zeichen durch (die Funktion ord() macht das Gegenteil); ansonsten können Sie sich mit Online-Tools wie CyberChef behelfen.
Das Flag für diese Aufgabe erhält man, indem man diese Zahlen in die entsprechenden ASCII-Zeichen umwandelt (dekodiert).
[102, 108, 97, 103, 123, 117, 103, 104, 95, 78, 117, 109, 66, 51, 114, 53, 95, 52, 49, 114, 51, 52, 100, 121, 125]
SOLUTION (by wasp1337): In Cyberchef: Leerzeichen und [] entfernen --> From Charcode, Delimiter Comma, Base 10 --> Flag
Konventionell werden Bitsequenzen in Bytes unterteilt, d. h. in benachbarte Teilsequenzen von jeweils 8 Bits.
Die hexadezimale Kodierung (oder Basis 16) ermöglicht eine sehr bequeme Darstellung.
Ein Byte wird in zwei benachbarte Sequenzen von je vier Bits unterteilt: Diese können, binär gelesen, als zwei ganze Zahlen von 0 bis 15 verstanden werden, die dann durch die Zeichen "0", "1", ..., "9", "a", "b", ..., "f" dargestellt werden.
Beispiel: 01101110 → 0110, 1110 → 6, 14 → '6', 'e' → '6e'.
Jedes Byte wird also in eine Folge von zwei Zeichen umgewandelt.
In Python werden Bytesequenzen mit Hilfe der Klasse bytes verarbeitet. Die Methode .hex() wird verwendet, um die entsprechende hexadezimale Zeichenfolge zu erhalten, während die Funktion bytes.fromhex(s) das Bytes-Objekt zurückgibt, das der hexadezimalen Zeichenfolge s entspricht.
Um das Flag zu erhalten, wird die folgende Zeichenkette in die entsprechende Bytefolge umgewandelt.
666c61677b68337834646563696d616c5f63346e5f62335f41424144424142457d
SOLUTION (by wasp1337): In Cyberchef: From HEX, Delimiter none --> Flag
In der Kryptographie hat man es oft mit ganzen Zahlen zu tun. Diese werden in der Regel mit verschiedenen Kodierungen der entsprechenden Bitfolgen übertragen.
In der Regel wird jedoch die Darstellung zur Basis 10 vermieden und aus Gründen der Kompaktheit ein breiteres Alphabet von Zeichen bevorzugt.
Mögliche Alternativen sind die Hexadezimaldarstellung (wie in der vorherigen Herausforderung) oder die Basis 64.
Ein Beispiel für ein Snippet in Python, das eine Zeichenkette zur Basis 64 dekodiert:
#!/usr/bin/env python3 from base64 import b64decode s = 'aGVubG8gOik=' print(b64decode(s))
Um ein Byte-Objekt in ein int-Objekt umzuwandeln, kann in Python die Funktion int.from_bytes(b, endianness) verwendet werden, wobei b unser Byte-Objekt ist und endianness entweder eine "große" oder "kleine" Zeichenkette ist, die die Reihenfolge angibt, in der die Bytes von b gelesen werden sollen: von links nach rechts bzw. umgekehrt.
Um eine ganze Zahl z in Bytes umzuwandeln, kann man stattdessen die Funktion (z).to_bytes(n, endianness) verwenden: n gibt die Anzahl der Bytes an, die für die Umwandlung verwendet werden sollen, und zwar in der durch endianness vorgegebenen Reihenfolge.
Das Flag dieser Aufgabe ist in zwei Hälften unterteilt: Der erste Teil wird aus base64 dekodiert, während der zweite Teil die angegebene Zahl (in base10) in Bytes in Big Endian umwandelt.
ZmxhZ3t3NDF0XzF0c19hbGxfYjE=
664813035583918006462745898431981286737635929725
SOLUTION (by wasp1337): In Cyberchef: 1. Teil from Base 64 oder python idle:
import base64
from base64 import b64decode
print(b64decode('ZmxhZ3t3NDF0XzF0c19hbGxfYjE=='))
- Teil: tbd
Eine sehr einfache und wirksame Methode, eine Nachricht zu verschleiern, ist die Verwendung von xor mit einem geheimen Schlüssel. Die Definition bezieht sich auf logische Variablen (Wahr/Falsch), aber das Konzept kann schnell und natürlich auf Bit-Strings ausgedehnt werden: Das xor zwischen zwei binären Sequenzen wird so zum Bit-zu-Bit-xor.
Zum Beispiel: 00110000 xor 01100001 → 01010001.
In Python wird das Xor zwischen zwei Ganzzahlen durch den Operator ^ gebildet. Um zwei Zeichenketten zu xorieren, müssen Sie sie zunächst in Bytes umwandeln und dann die Operation byteweise durchführen.
Eine Funktion in Python, die das Xor zwischen zwei Bytes durchführt, kann sein:
def xor(a, b): return bytes([x^y for x,y in zip(a,b)])
Um das Flag für diese Aufgabe zu erhalten, xorieren Sie diese beiden Nachrichten: Achten Sie auf die korrekte Dekodierung von Hexadezimal in Bytes!
m1 = 158bbd7ca876c60530ee0e0bb2de20ef8af95bc60bdf m2 = 73e7dc1bd30ef6576f883e79edaa48dcd58e6aa82aa2
m1 = 15 8b bd 7c a8 76 c6 05 30 ee 0e 0b b2 de 20 ef 8a f9 5b c6 0b df --> bin m2 = 73 e7 dc 1b d3 0e f6 57 6f 88 3e 79 ed aa 48 dc d5 8e 6a a8 2a a2 --> bin --> byteweise m1 XOR m2 --> bin to ASCII --> Flag
Die Verschlüsselungsmethode, die in der vorherigen Herausforderung verwendet wurde, heißt One Time Pad. Ein wichtiges Detail für perfekte Sicherheit ist, dass der Schlüssel so lang wie die Nachricht ist. Wenn der Schlüssel sehr kurz ist (und sich z. B. wiederholt), kann ein Brute-Force-Angriff möglich sein: Man probiert alle in Frage kommenden Schlüssel aus und schaut, welcher ein vernünftiges Ergebnis liefert. In dieser Aufgabe ist der verwendete Schlüssel nur ein Byte lang. Finden Sie einen Weg, die Nachricht zu entschlüsseln. Bitte beachten Sie: Der Chiffretext beginnt nicht mit dem üblichen Flag{ und endet nicht mit }!
ciphertext = 104e137f425954137f74107f525511457f5468134d7f146c4c
Das Flag ist 'flag{' + Klartext + '}'.
SOLUTION:
___ _ _ _ _ _ _ _ ____ _ _ _
/ _ \| (_)_ __ ___ _ __ (_) __ _ __| (_) __| (_) / ___| _| |__ ___ _ __ ___ ___ ___ _ _ _ __(_) |_ _ _
| | | | | | '_ ` _ \| '_ \| |/ _` |/ _` | | / _` | | | | | | | | '_ \ / _ \ '__/ __|/ _ \/ __| | | | '__| | __| | | |
| |_| | | | | | | | | |_) | | (_| | (_| | | | (_| | | | |__| |_| | |_) | __/ | \__ \ __/ (__| |_| | | | | |_| |_| |
\___/|_|_|_| |_| |_| .__/|_|\__,_|\__,_|_| \__,_|_| \____\__, |_.__/ \___|_| |___/\___|\___|\__,_|_| |_|\__|\__, |
|_| |___/ |___/
Auf einer alten Festplatte fand ich ein Foto von einem Strandurlaub vor vielen Jahren. Ich erinnere mich noch an die Tage am Strand unter dem Sonnenschirm, im Badeanzug und mit Sonnenbrille! Ich frage mich, warum unter all den Fotos nur noch dieses eine übrig ist?
SOLUTION (by wasp1337): In Photoshop öffnen und die Helligkeit herabsetzen, bis die Flag erscheint.
Heute Morgen habe ich eine E-Mail erhalten, die diese Nachricht enthielt, aber ich kann nicht herausfinden, was sie bedeutet. Können Sie mir helfen, sie zu entziffern?
SOLUTION (by wasp1337): In Cyberchef: from morsecode --> from Hex --> from binary --> from base64 --> flag
Dieses Bild enthält eine geheimnisvolle Botschaft. Kannst du sie finden?
SOLUTION (by wasp1337): GIF mit 8 Frames, capture mit Online GIF-Tools --> Frame 4 --> Flag
Ich habe die Flagge im Bild verloren, können Sie sie finden?
SOLUTION (by wasp1337): Bild in Cyberchef, ohne Recipy --> Ende der Codeansicht --> Flag
Oh nein! Es scheint, dass jemand unseren Server mit Spyware infiziert hat und sensible Daten ausspioniert! Schnüffeln Sie herum und finden Sie heraus, welche Informationen die Malware an die böswilligen Parteien sendet!
SOLUTION (by wasp1337): follow tcp-stream --> to hex --> flag
Können Sie die Flag zwischen all diesen Paketen rekonstruieren?
SOLUTION (by wasp1337): follow udp stream --> stream 1 --> flag
Kannst du die Katze finden?
SOLUTION (by wasp1337): Datei --> Objekt exportieren --> http --> Frame 325 Gatto.jpeg --> flag
Können Sie dem Stream folgen?
SOLUTION (by wasp1337): follow tcp stream --> stream 10 --> flag
Ich habe diese Datei von einem sehr wichtigen Server gestohlen, aber ich kann in diesen Paketen nichts Nützliches finden, ihre Sicherheit ist undurchdringlich. Die Pakete sind alle verschlüsselt oder unbrauchbar, besser woanders suchen.
SOLUTION:
Ich habe mich drei Tage lang unter einem Tisch im Poca Cola-Hauptquartier versteckt, ich habe ihre gesamte Kommunikation zurückverfolgt! Bitte finde das Geheimrezept, damit ich hier rauskomme...
SOLUTION (by wasp1337): Filter: http.request.method==POST --> Frame 18626 enthält ricetta.txt.zip --> password protected --> john:
.\zip2john.exe .ricetta.txt.zip > ricetta.txt
.\john.exe .\ricetta.txt
--> tbd
Nach dem spektakulären Erfolg von NumberWang gibt es nun eine neue Ausgabe des beliebten Spiels für Menschen zwischen 25 und 25einhalb Jahren: WordWang! Werden Sie WordWang bekommen können?
Sie können sich mit dem Fernservice verbinden mit:
ncat wordwang.challs.olicyber.it 10601
SOLUTION (by wasp1337): Follow TCP stream --> Anleitung -->
ncat wordwang.challs.olicyber.it 10601
Welcome to Wordwang! The show where the words are wanged!
hole
[...]
That's wordwang! Here's the flag:
-->flag
Bitte helfen Sie uns, den Inhalt der Webseiten aus diesem Traffic Log zu finden. Es gibt eine zusätzliche Datei, die Ihnen helfen kann: ....
SOLUTION:
SOLUTION (by kirkokirk):
-->No robots? -> robots.txt?
http://no-robots.challs.olicyber.it/robots.txt
-->Try to open .html
http://no-robots.challs.olicyber.it//I77p0mhKjr.html
Wenn wir eine Webseite laden, kommunizieren wir mit einem Server, aber was antwortet er uns? http://headache.challs.olicyber.it/
SOLUTION (by kirkokirk):
-->Headache -> something in header?-> look at header in inspect modus of Browser-> we find a flag field with flag
Ich habe auf einer unbenannten Website ein Anmeldeformular gefunden, habe aber keine Ahnung, wie die Anmeldeinformationen lauten ...
Würden Sie versuchen, sich für mich einzuloggen?
Website: http://just-a-reminder.challs.olicyber.it
SOLUTION (by kirkokirk):
-->Inspector Mode in Firefox and make login attempt
-->Look at default.js code (that is executed at login)

-->Evaluate js- code in Interpreter:
AES_decrypt('U2FsdGVkX1/JEKDXgPl2RqtEgj0LMdp8/Q1FQelH7whIP49sq+WvNOeNjjXwmdrl', s3cr37)
"v3ry_l337_p455w0rd_!"
-->Login with user admin and password to get flag
SOLUTION (by kirkokirk):
-->cixd{xsb_zxbpxo_jlofqrof_qb_pxirqxkq} Looks like Shifted /Rotated letters
-->Cixd -> flag?...would be rotated +3 ?
-->Try Rot brute force 1…26:
-->eg. Try with cyberchef: https://gchq.github.io/CyberChef/#recipe=ROT13(true,true,false,3/disabled)ROT13_Brute_Force(true,true,false,100,0,true,'')&input=Y2l4ZHt4c2JfenhicHhvX2psb2Zxcm9mX3FiX3B4aXJxeGtxfQ
Entschlüsseln Sie mich!
AAAABAAAAAAAABAABBBAABBABABAAABAABAABAABAABBBAABBAAAAABAABAABAABBBBAAA
Die Flagge hat nicht das Standardformat, also entschlüsseln Sie die Nachricht und fügen Sie sie anstelle von Punkten ein: flag{...}
HINT: Bacon tastes good ....
SOLUTION (by kirkokirk):
->Bacon (Speck)-> Bacon Decode?:
https://de.wikipedia.org/wiki/Bacon-Chiffre
SOLUTION (by kirkokirk):
->Look for filetype
└─$ file hidden_variable
hidden_variable: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a49b8440fef01532ca63db6ed6a7ab59a704e8f6, for GNU/Linux 3.2.0, not stripped
-->Binary x86-64
-->Execute binary
└─$ ./hidden_variable
La tua flag è f_ag{.ł€“ß#[ Accidenti, sembra corrotta! Dove avrò lasciato l'originale?
->Search hexdump
└─$ xxd hidden_variables
................
00002f40: 0100 0000 0000 0000 f0ff ff6f 0000 0000 ...........o....
00002f50: f204 0000 0000 0000 f9ff ff6f 0000 0000 ...........o....
00002f60: 0300 0000 0000 0000 0000 0000 0000 0000 ................
00002f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00002f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
................
00003020: 6600 0000 6c00 0000 6100 0000 6700 0000 f...l...a...g...
00003030: 7b00 0000 7500 0000 6e00 0000 7500 0000 ?...?...?...?...
00003040: 3500 0000 3300 0000 6400 0000 5f00 0000 ?...?...?...?...
................