hacktricks/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md

57 lines
5.3 KiB
Markdown

# Drucken Sie den Stack-Canary
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben** sehen möchten oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
## Vergrößern Sie den gedruckten Stack
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 des Payloads auf, die den **gesamten Canary** (außer dem ersten Nullbyte) **ausdruckt**.
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** seines **Payloads zu drucken**, um den **Canary zu extrahieren** und dann in derselben Programmsitzung einen neuen Payload zu erstellen und den **echten Pufferüberlauf zu senden**.
**CTF-Beispiele:**&#x20;
* [**https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html**](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 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.
* [**https://guyinatuxedo.github.io/14-ret\_2\_system/hxp18\_poorCanary/index.html**](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 von puts darauf, um den Canary zu preisgeben + ret2lib, der `system` mit einer ROP-Kette aufruft, um r0 (arg `/bin/sh`) und pc (Adresse von system) zu poppen
## Beliebige Lesezugriff
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**](https://ir0nstone.gitbook.io/notes/types/stack/canaries) und Sie können lesen, wie Sie Formatstrings missbrauchen, um beliebige Speicheradressen zu lesen:
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
{% endcontent-ref %}
* [https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html)
* Diese Herausforderung missbraucht auf sehr einfache Weise einen Formatstring, um den Canary vom Stack zu lesen
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben** sehen möchten oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>