Print Stack Canary
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Stell dir eine Situation vor, in der ein Programm anfällig für einen Stack-Overflow eine puts-Funktion aufrufen kann, die auf einen Teil des Stack Overflows zeigt. Der Angreifer weiß, dass das erste Byte des Canaries ein Null-Byte (\x00
) ist und der Rest des Canaries zufällige Bytes sind. Dann kann der Angreifer einen Overflow erstellen, der den Stack überschreibt, bis nur das erste Byte des Canaries übrig bleibt.
Anschließend ruft der Angreifer die puts-Funktionalität in der Mitte des Payloads auf, die alle Canaries (außer dem ersten Null-Byte) ausgibt.
Mit diesen Informationen kann der Angreifer einen neuen Angriff erstellen 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 seines Payloads zu drucken, um den Canary zu exfiltrieren und dann in der Lage zu sein, einen neuen Payload zu erstellen (in der gleichen Programmsitzung) und den echten Buffer Overflow zu senden.
CTF-Beispiele:
64 Bit, ASLR aktiviert, aber kein PIE, der erste Schritt besteht darin, einen Overflow zu füllen, bis das Byte 0x00 des Canaries erreicht ist, um dann puts aufzurufen und es zu leaken. Mit dem Canary wird ein ROP-Gadget erstellt, um puts aufzurufen, um die Adresse von puts aus der GOT zu leaken, und ein ROP-Gadget, um system('/bin/sh')
aufzurufen.
32 Bit, ARM, kein relro, Canary, nx, kein pie. Overflow mit einem Aufruf an puts, um den Canary zu leaken + ret2lib, das system
mit einer ROP-Kette aufruft, um r0 (arg /bin/sh
) und pc (Adresse von system) zu poppen.
Mit einem arbitrary read, wie es durch Format-Strings bereitgestellt wird, könnte es möglich sein, den Canary zu leaken. Überprüfe dieses Beispiel: https://ir0nstone.gitbook.io/notes/types/stack/canaries und du kannst darüber lesen, wie man Format-Strings missbraucht, um beliebige Speicheradressen zu lesen in:
Format StringsDiese Herausforderung missbraucht auf sehr einfache Weise einen Format-String, um den Canary vom Stack zu lesen.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)