Print Stack Canary
Last updated
Last updated
Lernen Sie & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Stellen Sie sich eine Situation vor, in der ein Programm anfällig für einen Stack-Überlauf eine puts-Funktion ausführen kann, die auf einen Teil des Stack-Überlaufs zeigt. Der Angreifer weiß, dass das erste Byte des Canary ein Nullbyte (\x00
) ist und der Rest des Canary zufällige Bytes sind. Dann kann der Angreifer einen Überlauf erstellen, der den Stack überschreibt, bis nur das erste Byte des Canary übrig ist.
Dann ruft der Angreifer die Funktionalität puts in der Mitte der Nutzlast auf, die den gesamten Canary druckt (außer dem ersten Nullbyte).
Mit diesen Informationen kann der Angreifer einen neuen Angriff entwerfen und senden, wobei er den Canary kennt (in derselben Programmsitzung).
Offensichtlich ist diese Taktik sehr eingeschränkt, da der Angreifer in der Lage sein muss, den Inhalt seiner Nutzlast zu drucken, um den Canary zu extrahieren und dann eine neue Nutzlast (in derselben Programmsitzung) zu erstellen und zu senden, um den echten Pufferüberlauf zu senden.
CTF-Beispiele:
64 Bit, ASLR aktiviert, aber kein PIE, der erste Schritt besteht darin, einen Überlauf zu füllen, bis das Byte 0x00 des Canary erreicht ist, um dann puts aufzurufen und ihn preiszugeben. Mit dem Canary wird ein ROP-Gadget erstellt, um puts aufzurufen, um die Adresse von puts aus dem GOT preiszugeben, und ein ROP-Gadget, um system('/bin/sh')
aufzurufen.
32 Bit, ARM, kein relro, Canary, nx, kein PIE. Überlauf mit einem Aufruf von puts darauf, um den Canary zu preisgeben + ret2lib-Aufruf von system
mit einer ROP-Kette, um r0 (arg /bin/sh
) und pc (Adresse von system) zu poppen
Mit einem beliebigen Lesezugriff wie dem, der durch Format Strings bereitgestellt wird, könnte es möglich sein, den Canary preiszugeben. Überprüfen Sie dieses Beispiel: https://ir0nstone.gitbook.io/notes/types/stack/canaries und Sie können lesen, wie Sie Formatstrings missbrauchen, um beliebige Speicheradressen zu lesen:
Format StringsDiese Herausforderung missbraucht auf sehr einfache Weise einen Formatstring, um den Canary vom Stack zu lesen
Lernen Sie & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)