In diesem Artikel lösen wir die 25. Aufgabe der Website
organisatorische InformationenSpeziell für diejenigen, die etwas Neues lernen und sich in einem der Bereiche der Informations- und Computersicherheit weiterentwickeln möchten, werde ich über die folgenden Kategorien schreiben und sprechen:
- PWN;
- Kryptographie (Krypto);
- Netzwerktechnologien (Netzwerk);
- umgekehrt (Reverse Engineering);
- Steganographie (Stegano);
- Suche und Ausnutzung von WEB-Schwachstellen.
Darüber hinaus werde ich meine Erfahrungen in den Bereichen Computerforensik, Malware- und Firmware-Analyse, Angriffe auf drahtlose Netzwerke und lokale Netzwerke, Pentesting und Schreiben von Exploits weitergeben.
Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich erstellt
Alle Informationen dienen ausschließlich Bildungszwecken. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die irgendjemandem durch die Verwendung der durch das Studium dieses Dokuments erworbenen Kenntnisse und Methoden entstehen.
Lösung der OTP-Aufgabe
Weiter geht es mit dem zweiten Abschnitt. Ich sage gleich, dass es schwieriger ist als das erste, aber dieses Mal wird der Quellcode des Programms nicht bereitgestellt. Vergessen Sie nicht die Diskussion hier (https://t.me/RalfHackerPublicChat) und hier (https://t.me/RalfHackerChannel). Lasst uns beginnen.
Klicken Sie auf das Symbol mit der Signatur otp. Wir erhalten eine Adresse und einen Port, zu dem wir eine Verbindung herstellen können.
Wir verbinden uns und schauen uns auf dem Server um.
Die Flagge, die wir nicht lesen können, ist das Programm und sein Quellcode. Schauen wir uns die Quelle an.
Lass es uns aufgreifen. Als Argument akzeptiert das Programm ein Passwort.
Darüber hinaus werden zufällig 16 Bytes in der OTP-Variablen gespeichert.
Im TMP-Ordner wird eine Datei mit einem zufälligen Namen erstellt (die ersten 8 Bytes sind OTP) und es werden zufällige 8 Bytes hineingeschrieben (die zweiten 8 Bytes sind OTP).
Aus irgendeinem Grund wird der Wert der erstellten Datei gelesen und mit dem eingegebenen Passwort verglichen.
Hier besteht eine Schwachstelle. 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 0 mit dem Passwort verglichen. Das kannst du so machen.
# ulimit -f 0
Lassen Sie uns nun das Programm ausführen.
Wir erhalten eine Fehlermeldung. Es spielt keine Rolle, es kann mit derselben Python verarbeitet werden.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Wir bekommen die Flagge und unsere einfachen 100 Punkte. Und wir machen weiter: Im nächsten Artikel werden wir uns mit dem Web befassen. Sie können sich uns anschließen unter
Source: habr.com