Print Stack Canary
Reading time: 3 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Vergrößern des gedruckten Stacks
Stellen Sie sich eine Situation vor, in der ein Programm anfällig für einen Stack-Überlauf eine puts-Funktion aufrufen kann, die auf einen Teil des Stack-Überlaufs 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 Überlauf erzeugen, der den Stack bis zum ersten Byte des Canaries überschreibt.
Anschließend ruft der Angreifer die puts-Funktionalität in der Mitte der Nutzlast auf, die alle Bytes des Canaries druckt (außer dem ersten Null-Byte).
Mit diesen Informationen kann der Angreifer eine neue Attacke 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 seiner Nutzlast zu drucken, um den Canary zu exfiltrieren und dann eine neue Nutzlast (in der gleichen Programmsitzung) zu erstellen und den echten Buffer-Overflow zu senden.
CTF-Beispiele:
- https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
- 64 Bit, ASLR aktiviert, aber kein PIE, der erste Schritt besteht darin, einen Überlauf bis zum Byte 0x00 des Canaries zu füllen, 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 dem GOT zu leaken, und ein ROP-Gadget, um
system('/bin/sh')
aufzurufen. - https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
- 32 Bit, ARM, kein relro, Canary, nx, kein pie. Überlauf 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.
Arbitrary Read
Mit einem willkürlichen Lesen, wie es durch Format-Strings bereitgestellt wird, könnte es möglich sein, den Canary zu leaken. Überprüfen Sie dieses Beispiel: https://ir0nstone.gitbook.io/notes/types/stack/canaries und Sie können darüber lesen, wie man Format-Strings missbraucht, um willkürliche Speicheradressen zu lesen in:
- https://guyinatuxedo.github.io/14-ret_2_system/asis17_marymorton/index.html
- Diese Herausforderung missbraucht auf sehr einfache Weise einen Format-String, um den Canary vom Stack zu lesen.
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.