hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md

7.3 KiB

प्रिंट स्टैक कैनरी

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मुद्रित स्टैक को बढ़ाएं

एक प्रोग्राम जो स्टैक ओवरफ्लो के लिए वंशित है किसी स्थान पर स्टैक ओवरफ्लो का पुट्स फ़ंक्शन को निर्देशित कर सकता है। हमलावर जानता है कि कैनरी का पहला बाइट एक शून्य बाइट (\x00) है और कैनरी के बाकी भाग रैंडम बाइट्स हैं। फिर, हमलावर एक ओवरफ्लो बना सकता है जो केवल कैनरी के पहले बाइट तक स्टैक को अधिक करता है

फिर, हमलावर पेलोड के बीच में पुट्स फ़ंक्शन को कॉल करता है जो सभी कैनरी को मुद्रित करेगा (शुरुआती शून्य बाइट को छोड़कर)।

इस जानकारी के साथ हमलावर एक नया हमला तैयार कर सकता है और भेज सकता है कैनरी को जानते हुए (उसी प्रोग्राम सत्र में)।

स्पष्ट है कि यह युक्ति बहुत प्रतिबंधित है क्योंकि हमलावर को अपने पेलोड की सामग्री को प्रिंट करने की आवश्यकता है ताकि कैनरी को बाहर निकाल सके और फिर एक नया पेलोड (उसी प्रोग्राम सत्र में) बना सके और वास्तविक बफर ओवरफ्लो को भेज सके।

CTF उदाहरण:

  • https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
  • 64 बिट, ASLR सक्षम है लेकिन PIE नहीं, पहला कदम है कैनरी के 0x00 बाइट तक एक ओवरफ्लो भरना और फिर पुट्स को कॉल करके इसे लीक करना। कैनरी के साथ एक ROP गैजेट बनाया जाता है जो पुट्स को कॉल करने के लिए GOT से पुट्स का पता लगाने और एक ROP गैजेट को कॉल करने के लिए system('/bin/sh') करने के लिए।

अर्बिट्रेरी रीड

एक ऐसे अर्बिट्रेरी रीड के साथ जैसे कि फॉर्मेट स्ट्रिंग्स द्वारा प्रदान किया गया हो, कैनरी को लीक करना संभव हो सकता है। इस उदाहरण की जांच करें: https://ir0nstone.gitbook.io/notes/types/stack/canaries और आप यहां पढ़ सकते हैं कि कैसे फॉर्मेट स्ट्रिंग्स का दुरुपयोग करके अर्बिट्रेरी मेमोरी पतों को पढ़ने के बारे में:

{% content-ref url="../../format-strings/" %} format-strings {% endcontent-ref %}

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके: