5.1 KiB
Imprimer le Stack Canary
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.
Augmenter le stack imprimé
Imaginez une situation où un programme vulnérable à un débordement de pile peut exécuter une fonction puts pointant vers une partie du débordement de pile. L'attaquant sait que le premier octet du canary est un octet nul (\x00
) et que le reste du canary est composé d'octets aléatoires. Ensuite, l'attaquant peut créer un débordement qui écrase la pile jusqu'au premier octet du canary.
Ensuite, l'attaquant appelle la fonctionnalité puts au milieu de la charge utile qui imprimera tout le canary (à l'exception du premier octet nul).
Avec ces informations, l'attaquant peut concevoir et envoyer une nouvelle attaque en connaissant le canary (dans la même session du programme).
Évidemment, cette tactique est très restreinte car l'attaquant doit être capable d'imprimer le contenu de sa charge utile pour exfiltrer le canary et ensuite être capable de créer une nouvelle charge utile (dans la même session du programme) et envoyer le vrai débordement de tampon.
Exemples CTF :
- https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
- 64 bits, ASLR activé mais pas PIE, la première étape consiste à remplir un débordement jusqu'à l'octet 0x00 du canary pour ensuite appeler puts et le divulguer. Avec le canary, un gadget ROP est créé pour appeler puts et divulguer l'adresse de puts depuis la GOT, puis un gadget ROP pour appeler
system('/bin/sh')
- https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
- 32 bits, ARM, pas de relro, canary, nx, pas de pie. Débordement avec un appel à puts pour divulguer le canary + ret2lib appelant
system
avec une chaîne ROP pour pop r0 (arg/bin/sh
) et pc (adresse de system)
Lecture arbitraire
Avec une lecture arbitraire comme celle fournie par les chaines de format, il pourrait être possible de divulguer le canary. Consultez cet exemple : https://ir0nstone.gitbook.io/notes/types/stack/canaries et vous pouvez lire sur l'abus des chaines de format pour lire des adresses mémoire arbitraires dans :
{% content-ref url="../../format-strings/" %} format-strings {% endcontent-ref %}
- https://guyinatuxedo.github.io/14-ret_2_system/asis17_marymorton/index.html
- Ce défi abuse d'une manière très simple d'une chaine de format pour lire le canary depuis la pile
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.