Problemlösung mit pwnable.kr 01 - fd. Dateideskriptoren und -prozesse

Bild

In diesem Artikel werden wir analysieren: Was ist ein Dateideskriptor, wie greifen Prozesse auf bestimmte Eingabe- / Ausgabestreams zu und lösen die erste Aufgabe von der Site pwnable.kr .

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.

Dateideskriptoren


Ein Dateideskriptor ist eine nicht negative Zahl, die einen Eingabe- / Ausgabestream identifiziert, der Dateien, Verzeichnissen oder Sockets zugeordnet sein kann.

Bild

Die Systemdateitabelle (SFT - System File Table) und die Inode-Tabelle (INode Table) enthalten die Informationen, die der Prozess für den Zugriff auf die Dateidaten benötigt. Wenn mehrere Prozesse den Zugriff auf dieselbe Datei anfordern, erhält jeder dieser Prozesse ein eigenes Element der Systemdateitabelle, obwohl sie mit derselben Datei arbeiten.

Der Kernel stellt den Dateideskriptor für den Prozess bereit, wenn er Zugriff auf die Datei erhält. Wir können sagen, dass ein Dateideskriptor ein Index eines Arrays offener Dateien ist, der für jeden Prozess eindeutig ist. Die ersten drei Indizes sind jedoch fest festgelegt:

  • 0 - Standardeingabe (stdin);
  • 1 - Standardausgabe (Standardausgabe);
  • 2 - Standardfehlerstrom (stderr).

Daher verwenden die Funktionen get () und printf () aus der C-Standardbibliothek stdin und stdout, wodurch Shells die Eingabe und Ausgabe von Prozessen ordnungsgemäß umleiten können.

Fd Joblösung


Wir klicken auf das erste Symbol mit der Signatur fd 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.

ls -l 

Bild

Auf diese Weise können wir den Quellcode des Programms lesen, da für jeden ein Leserecht besteht, und das fd-Programm mit den Rechten des Eigentümers ausführen (das Sticky-Bit ist gesetzt). Schauen wir uns den Quellcode an.

Bild

Aus dem Code folgt, dass das Programm eine Zahl als Parameter verwendet, 0x1234 davon subtrahiert und als Deskriptor verwendet, um eine Zeichenfolge zu erhalten, die gleich "LETMEWIN" sein sollte.

Bild

Daher müssen wir dem Programm die Zeichenfolge "LETMEWIN" über den Standardeingabestream (stdin) senden. Dazu muss der Deskriptor, der an die Funktion read () übergeben wird, 0 sein. Das heißt, die Nummer 0x1234 muss als Programmparameter verwendet werden. Konvertieren Sie es in eine Dezimalzahl.

Bild

Führen Sie nun das Programm mit Parameter 4660 aus, lassen Sie die gewünschte Zeile fallen und nehmen Sie das Flag auf.

Bild

Als Ergebnis erhalten wir den ersten Punkt.

Bild

Pwnable.kr beginnt mit einer so einfachen Aufgabe, dank derer es notwendig war, sich mit Deskriptoren zu befassen. Wir sehen uns in den folgenden Artikeln!

Wir befinden uns in einem Telegrammkanal: einem Kanal im Telegramm .

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


All Articles