hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections-and-bypasses/pie
2024-04-01 08:45:53 +00:00
..
bypassing-canary-and-pie.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/arbitra 2024-03-30 23:49:39 +00:00
README.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/common- 2024-04-01 08:45:53 +00:00

PIE

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

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

मौलिक जानकारी

एक बाइनरी जो PIE के रूप में कंपाइल किया गया है, या स्थिति स्वतंत्र कार्यकारी, यह अर्थ है कि प्रोग्राम हर बार विभिन्न मेमोरी स्थानों पर लोड कर सकता है जब भी यह निष्पादित किया जाता है, हार्डकोड किए गए पतों को रोकते हुए।

इन बाइनरी को उत्पीड़ित करने का तरीका इसमें छिपे सापेक्ष पतों का उपयोग करने में है—प्रोग्राम के भागों के बीच के अंतर समान रहते हैं चाहे यदि पूर्ण स्थान बदल जाए। PIE को बाइपास करने के लिए, आपको केवल एक पता लीक करने की आवश्यकता है, सामान्यत: स्टैक से उदाहरण के रूप में फॉर्मेट स्ट्रिंग हमलों जैसे सुरक्षा दोषों का उपयोग करके। एक बार जब आपके पास एक पता होता है, तो आप उन्हें उनके निश्चित ऑफसेट के द्वारा हिसाब से कर सकते हैं।

PIE बाइनरी का उपयोग करने में एक सहायक संकेत है कि उनका आधार पता सामान्यत: 000 समाप्त होता है क्योंकि मेमोरी पेज यादृच्छिकताकरण की इकाइयां होती हैं, जो 0x1000 बाइट के आकार में होती हैं। यह समरूपण एक महत्वपूर्ण जांच हो सकती है यदि एक उत्पीड़न काम नहीं कर रहा है जैसा कि अपेक्षित था, यह सूचित करता है कि क्या सही आधार पता पहचाना गया है।
या आप इसे अपने उत्पीड़न के लिए उपयोग कर सकते हैं, यदि आप लीक करते हैं कि एक पता 0x649e1024 पर स्थित है तो आप जानते हैं कि आधार पता 0x649e1000 है और फिर आप सिर्फ कार्यों और स्थानों के ऑफसेट हिसाब से हिसाब लगा सकते हैं।

बाइपास

PIE को बाइपास करने के लिए लोड किए गए बाइनरी के कुछ पतों को लीक करने की आवश्यकता है, इसके लिए कुछ विकल्प हैं:

  • ASLR निष्क्रिय कर दिया गया है: यदि ASLR निष्क्रिय है तो PIE के साथ कंपाइल किया गया बाइनरी हमेशा एक ही पते पर लोड होगा, इसलिए PIE बेकार हो जाएगा क्योंकि वस्तुओं के पते हमेशा एक ही स्थान पर होंगे।
  • लीक दिया जाता है (सरल CTF चुनौतियों में सामान्य, इस उदाहरण की जांच करें)
  • स्टैक में सही वैल्यूज को लीक करने के लिए स्टैक में ब्रूट-फोर्स EBP और EIP मान:

{% content-ref url="bypassing-canary-and-pie.md" %} bypassing-canary-and-pie.md {% endcontent-ref %}

  • एक बाइनरी के पते को लीक करने के लिए फॉर्मेट स्ट्रिंग जैसे किसी भी विचित पठन दोष का उपयोग करें (उदाहरण के रूप में स्टैक से, पिछली तकनीक में) बाइनरी का आधार प्राप्त करने और वहां से ऑफसेट का उपयोग करने के लिए। यहाँ एक उदाहरण देखें.

संदर्भ

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

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