Print Stack Canary

Reading time: 3 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

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 और आप पढ़ सकते हैं कि format strings का दुरुपयोग करके कैसे arbitrary memory addresses को पढ़ा जा सकता है:

Format Strings

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें