Problemlösung mit pwnable.kr 02 - Kollision. Hash-Kollision

Bild

In diesem Artikel erinnern wir uns an Kollisionen in Hash-Funktionen und lösen die zweite 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.

Hash-Funktionskollisionen


Eine Hash-Funktionskollision ist ein solches Paar von Blöcken x und y , das Ergebnis der Hash () -Hash- Funktion, aus der der gleiche Block z resultiert.

Hash (x) = Hash (y) = z

Kollisionen sind für absolut jede Hash-Funktion möglich, da der Satz von Eingaben viel größer ist als der Satz von Hash-Funktionsausgängen.

Bild

Daher wird die Stabilität der Hash-Funktion durch drei Eigenschaften bestimmt:

  • Irreversibilität - die Unfähigkeit, eine Nachricht durch Hash wiederherzustellen;
  • Widerstand gegen Kollisionen der ersten Art - für eine einzelne Nachricht ist es unmöglich, eine zweite Nachricht zu finden, die den gleichen Hash wie die erste gibt;
  • Widerstand gegen Kollisionen der zweiten Art - Sie können kein Nachrichtenpaar abrufen, dessen Hash identisch ist.

Kollisionsjoblösung


Wir klicken auf das zweite Symbol mit der Signaturkollision 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 col-Programm mit den Rechten des Eigentümers ausführen (das Sticky-Bit ist gesetzt). Schauen wir uns das Ergebnis des Codes an.

Bild

Aus dem Code folgt, dass das Programm eine Zeichenfolge mit 20 Zeichen als Parameter verwendet, diese an eine Funktion übergibt, die den Hash berechnet und mit dem Referenzwert vergleicht.

Bild

Bild

Innerhalb der Funktion ist unsere Zeichenfolge in 5 Blöcke zu je 4 Bytes unterteilt, die in Zahlen umgewandelt werden. Danach werden diese Zahlen addiert. Wir brauchen also 5 Zahlen, die insgesamt 0x21dd09ec ergeben. Erfüllen Sie die Bedingung: 0xd1d905e8 und 0x01010101.

Bild

Jetzt müssen Sie nicht druckbare Zeichen als Parameter für das Programm an die Befehlszeile übergeben. Dazu verwenden wir die Bash-Syntax und den Python-Interpreter. Es ist wichtig zu beachten, dass diese Nummern im Speicher des Computers in umgekehrter Reihenfolge gespeichert werden, sodass wir sie umdrehen.

 ./col $(python - “print('\x01\x01\x01\x01'*4 + '\xe8\x05\xd9\x1d')”) 

Bild

Als Ergebnis erhalten wir drei Punkte.

Bild

Jetzt haben wir ein sehr einfaches Beispiel für eine Kollision untersucht. Im nächsten Artikel werden wir die dritte Aufgabe lösen und eine Sicherheitsanfälligkeit wie einen Pufferüberlauf auf dem Stapel analysieren. Wir sehen uns in den folgenden Artikeln.

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

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


All Articles