PIE
Reading time: 3 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Basic Information
एक बाइनरी जिसे PIE, या Position Independent Executable के रूप में संकलित किया गया है, का मतलब है कि प्रोग्राम हर बार इसे निष्पादित करने पर विभिन्न मेमोरी स्थानों पर लोड हो सकता है, जिससे हार्डकोडेड पते को रोका जा सकता है।
इन बाइनरीज़ का शोषण करने का तरीका सापेक्ष पते का शोषण करना है—प्रोग्राम के भागों के बीच के ऑफसेट समान रहते हैं भले ही निरपेक्ष स्थान बदल जाए। PIE को बायपास करने के लिए, आपको केवल एक पता लीक करने की आवश्यकता है, आमतौर पर स्टैक से फॉर्मेट स्ट्रिंग हमलों जैसी कमजोरियों का उपयोग करके। एक बार जब आपके पास एक पता हो, तो आप उनके फिक्स्ड ऑफसेट्स द्वारा अन्य का अनुमान लगा सकते हैं।
PIE बाइनरीज़ का शोषण करने में एक सहायक संकेत यह है कि उनका बेस पता आमतौर पर 000 पर समाप्त होता है क्योंकि मेमोरी पृष्ठ यादृच्छिकता की इकाइयाँ होती हैं, जिनका आकार 0x1000 बाइट्स होता है। यह संरेखण एक महत्वपूर्ण जांच हो सकती है यदि कोई शोषण अपेक्षित रूप से काम नहीं कर रहा है, यह संकेत करता है कि क्या सही बेस पता पहचाना गया है।
या आप इसे अपने शोषण के लिए उपयोग कर सकते हैं, यदि आप लीक करते हैं कि एक पता 0x649e1024
पर स्थित है, तो आप जानते हैं कि बेस पता 0x649e1000
है और वहां से आप बस फंक्शंस और स्थानों के ऑफसेट्स की गणना कर सकते हैं।
Bypasses
PIE को बायपास करने के लिए लोड की गई बाइनरी के कुछ पते को लीक करना आवश्यक है, इसके लिए कुछ विकल्प हैं:
- ASLR बंद: यदि ASLR बंद है, तो PIE के साथ संकलित बाइनरी हमेशा एक ही पते पर लोड होने वाली है, इसलिए PIE बेकार हो जाएगा क्योंकि वस्तुओं के पते हमेशा एक ही स्थान पर होंगे।
- लीक प्राप्त करना (आसान CTF चुनौतियों में सामान्य, इस उदाहरण की जांच करें)
- स्टैक में EBP और EIP मानों को ब्रूट-फोर्स करना जब तक कि आप सही लीक न कर लें:
- एक मनमाना पढ़ने की कमजोरी का उपयोग करें जैसे कि फॉर्मेट स्ट्रिंग बाइनरी का एक पता लीक करने के लिए (जैसे, पिछले तकनीक की तरह स्टैक से) बाइनरी का बेस प्राप्त करने के लिए और वहां से ऑफसेट्स का उपयोग करें। यहां एक उदाहरण खोजें.
References
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।