Lösung der Aufgabe mit pwnable.kr cmd1, cmd2, asm, blukat. Bypass-Filterung unter Linux. Shellcode mit pwntools schreiben

Bild

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.

Organisationsinformationen
Speziell 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.

Bild

Wenn verbunden, sehen wir das entsprechende Banner.

Bild

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

Bild

Schauen wir uns den Quellcode an.

Bild

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 *.

Bild

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.

Bild

Wenn verbunden, sehen wir das entsprechende Banner.

Bild

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

Bild

Schauen wir uns den Quellcode an.

Bild

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.

Bild

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.

Bild

Wenn verbunden, sehen wir das entsprechende Banner.

Bild

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

Bild

Schauen wir uns den Quellcode an.

Bild

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.

Bild

Bild

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.

Bild

Wenn verbunden, sehen wir das entsprechende Banner.

Bild

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

Bild

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

Bild

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

Bild

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:

  1. Wir setzen eine Zeile auf den Stapel - den Dateinamen.
  2. Öffnen Sie die Datei mit dem Namen oben im Stapel (rsp-Register).
  3. 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.
  4. Jetzt schreiben wir in die Standardausgabe (Deskriptor 1) ein Flag, das oben auf dem Stapel liegt (rsp-Register).
  5. 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() 

Bild

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 .

Source: https://habr.com/ru/post/de462091/


All Articles