Problemlösung mit pwnable.kr 25 - otp. Größenbeschränkung für Linux-Dateien

Bild

In diesem Artikel lösen wir die 25. Aufgabe von der Website 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.

Otp Joblösung


Wir setzen den zweiten Abschnitt fort. Ich werde gleich sagen, dass es schwieriger ist als das erste, aber diesmal liefern sie uns den Quellcode des Programms. Vergessen Sie nicht die Diskussion hier (https://t.me/RalfHackerPublicChat) und hier (https://t.me/RalfHackerChannel). Fangen wir an.

Klicken Sie auf das Symbol mit der Signatur otp. Wir erhalten die Adresse und den Anschluss für die Verbindung.

Bild

Wir verbinden uns und schauen uns auf dem Server um.

Bild

Ein Flag, das wir nicht lesen können, ein Programm und sein Quellcode. Mal sehen, die Quelle.

Bild

Lassen Sie es uns analysieren. Das Programm verwendet ein Passwort als Argument.

Bild

Als nächstes werden zufällige 16 Bytes in der otp-Variablen gespeichert.

Bild

Eine Datei mit einem zufälligen Namen (die ersten 8 Bytes von otp) wird im Ordner tmp erstellt und zufällige 8 Bytes (die zweiten 8 Bytes von otp) werden in diesen Ordner geschrieben.

Bild

Aus irgendeinem Grund liest die erstellte Datei den Wert und vergleicht ihn mit dem eingegebenen Kennwort.

Bild

Hier liegt die Sicherheitslücke. Es besteht in der Zwischenspeicherung der generierten Nummer in einer Datei. Wir können die Dateigröße beispielsweise auf 0 begrenzen, dann wird beim Schreiben und Lesen mit dem Passwort 0 verglichen. Dies kann folgendermaßen erfolgen.

# ulimit -f 0 

Bild

Führen Sie nun das Programm aus.

Bild

Wir bekommen einen Fehler. Es spielt keine Rolle, da es mit derselben Python verarbeitet werden kann.

 python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

Bild

Wir bekommen die Flagge und unsere Lunge 100 Punkte. Und wir fahren fort: Im nächsten Artikel werden wir auf das Web eingehen. Sie können sich uns per Telegramm anschließen .

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


All Articles