Print Stack Canary
Reading time: 4 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Enlarge printed stack
एक ऐसी स्थिति की कल्पना करें जहाँ एक program vulnerable to stack overflow puts फ़ंक्शन को pointing कर सकता है part of the stack overflow. हमलावर जानता है कि canary का पहला byte एक null byte है (\x00
) और बाकी canary random bytes हैं। फिर, हमलावर एक overflow बना सकता है जो stack को overwrite करता है जब तक कि canary का पहला byte नहीं हो जाता।
फिर, हमलावर payload के मध्य में puts functionality को call करता है जो canary को print करेगा (पहले null byte को छोड़कर)।
इस जानकारी के साथ हमलावर canary को जानकर एक नया हमला तैयार और भेज सकता है (उसी program session में)।
स्पष्ट रूप से, यह रणनीति बहुत restricted है क्योंकि हमलावर को अपने payload की content को print करने में सक्षम होना चाहिए ताकि canary को exfiltrate कर सके और फिर एक नया payload बना सके (उसी program session में) और real buffer overflow को send कर सके।
CTF examples:
- https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
- 64 bit, ASLR सक्षम लेकिन कोई PIE नहीं, पहला कदम overflow को भरना है जब तक canary का byte 0x00 नहीं हो जाता ताकि फिर puts को call किया जा सके और इसे leak किया जा सके। canary के साथ एक ROP gadget बनाया जाता है जो puts को call करता है ताकि GOT से puts का पता leak किया जा सके और फिर एक ROP gadget जो
system('/bin/sh')
को call करता है। - https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
- 32 bit, ARM, कोई relro नहीं, canary, nx, कोई pie नहीं। इसे leak करने के लिए puts पर एक call के साथ overflow करें + ret2lib जो
system
को ROP chain के साथ call करता है ताकि r0 (arg/bin/sh
) और pc (system का पता) को pop किया जा सके।
Arbitrary Read
एक arbitrary read के साथ जैसे कि format strings द्वारा प्रदान किया गया, canary को leak करना संभव हो सकता है। इस उदाहरण को देखें: https://ir0nstone.gitbook.io/notes/types/stack/canaries और आप arbitrary memory addresses को पढ़ने के लिए format strings का दुरुपयोग करने के बारे में पढ़ सकते हैं:
- https://guyinatuxedo.github.io/14-ret_2_system/asis17_marymorton/index.html
- यह चुनौती एक बहुत सरल तरीके से format string का दुरुपयोग करती है ताकि stack से canary को पढ़ा जा सके।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।