hacktricks/binary-exploitation/array-indexing.md

7.6 KiB

Array Indexing

{% hint style="success" %} AWS हैकिंग सीखें और अभ्यास करें:HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)

हैकट्रिक्स का समर्थन करें
{% endhint %}

मूल जानकारी

इस श्रेणी में वह सभी सुरक्षा दोष शामिल हैं जो इसलिए होते हैं क्योंकि सरणियों में अनुक्रमों के संचालन में त्रुटियों के माध्यम से कुछ डेटा को अधिलेखित करना संभव है। यह एक बहुत व्यापक श्रेणी है जिसमें कोई विशिष्ट तरीका नहीं है क्योंकि शोषण तंत्र पूरी तरह से दोष की स्थितियों पर निर्भर होता है।

हालांकि यहाँ आप कुछ अच्छे उदाहरण पा सकते हैं:

  • https://guyinatuxedo.github.io/11-index/swampctf19_dreamheaps/index.html
  • यहाँ 2 टकराने वाले सरणियाँ हैं, एक पतों के लिए जहां डेटा स्टोर होता है और एक उस डेटा के आकार के लिए। एक से दूसरे को ओवरराइट करना संभव है, जिससे किसी भी पते को एक आकार के रूप में दर्ज किया जा सकता है। इससे free फ़ंक्शन का पता GOT तालिका में लिखने की अनुमति मिलती है और फिर इसे system के पते से ओवरराइट करने के लिए कॉल करने की अनुमति मिलती है, और /bin/sh के साथ मेमोरी से फ्री कॉल करने की संभावना होती है।
  • https://guyinatuxedo.github.io/11-index/csaw18_doubletrouble/index.html
  • 64 बिट, कोई nx नहीं। एक आकार को ओवरराइट करने के लिए एक प्रकार का बफर ओवरफ्लो प्राप्त करने के लिए जहां हर चीज एक डबल संख्या के रूप में उपयोग किया जाएगा और सब कुछ सबसे छोटे से बड़े तक क्रमबद्ध किया जाएगा, इसलिए इस आवश्यकता को पूरा करने के लिए एक ऐसा शैलीकोड बनाना आवश्यक है, जिसमें ध्यान देना चाहिए कि कैनारी को उसकी स्थिति से हटाया नहीं जाना चाहिए और अंत में RIP को एक पते से ओवरराइट करना होगा, जो पिछली आवश्यकताओं को पूरा करता है और सबसे बड़े पते को एक नए पते के साथ जोड़ना होगा जो स्टैक की शुरुआत की ओर प्वाइंट करता है (प्रोग्राम द्वारा लीक किया गया है) ताकि रेट से वहां जाने की संभावना हो।
  • https://faraz.faith/2019-10-20-secconctf-2019-sum/
  • 64 बिट, कोई relro, कैनारी, nx, कोई pie नहीं। स्टैक में एक ऐरे में एक ऑफ-बाई-वन है जो एक पॉइंटर को नियंत्रित करने की अनुमति देता है जिससे वह उस ऑफ-बाई-वन द्वारा ओवरराइट किए गए पते में सभी संख्याओं के योग को लिखता है। स्टैक नियंत्रित है ताकि GOT exit पता pop rdi; ret के साथ ओवरराइट हो जाए, और स्टैक में main का पता जोड़ा जाता है (वापस main पर लूप करने के लिए)। एक ROP श्रृंखला का उपयोग करने के लिए GOT में डाले गए पते को लीक करने के लिए एक ROP श्रृंखला का उपयोग किया जाता है (exit को कॉल किया जाएगा ताकि यह pop rdi; ret को कॉल करेगा और इसलिए स्टैक में इस श्रृंखला को निष्पादित करेगा)। अंत में एक नई ROP श्रृंखला निष्पादित करने के लिए ret2lib का उपयोग किया जाता है।
  • https://guyinatuxedo.github.io/14-ret_2_system/tu_guestbook/index.html
  • 32 बिट, कोई relro, कैनारी, nx, pie नहीं। लिबसी और हीप के पतों को स्टैक से लीक करने के लिए एक बुरा इंडेक्सिंग का दुरुपयोग करें। बफर ओवरफ्लो का दुरुपयोग करें ताकि system('/bin/sh') को कॉल करने के लिए ret2lib किया जा सके (एक जाँच को छलने के लिए हीप पता आवश्यक है)।