Ret2dlresolve
मौलिक जानकारी
GOT/PLT और Relro के पृष्ठ में समझाया गया है कि पूर्ण Relro के बिनरी सिम्बोल (जैसे बाहरी पुस्तकालयों के पतों) को पहली बार उन्हें उपयोग किया जाता है तो हल करेगा। यह समाधान _dl_runtime_resolve
फ़ंक्शन को बुलाकर होता है।
_dl_runtime_resolve
फ़ंक्शन स्टैक से कुछ संरचनाओं को लेता है जिनकी आवश्यकता होती है उस विशिष्ट प्रतीक को हल करने के लिए।
इसलिए, यह संभव है कि सभी इन संरचनाओं को नकली बनाया जाए ताकि डायनामिक लिंक किए गए अनुरोधित प्रतीक (जैसे system
फ़ंक्शन) को हल करें और इसे एक विन्यासित पैरामीटर (उदाहरण के लिए system('/bin/sh')
) के साथ बुलाएं।
सामान्यत: यह सभी संरचनाएँ नकली बनाकर किया जाता है एक प्रारंभिक ROP श्रृंखला बनाकर जो read
को बुलाती है एक लिखने योग्य स्मृति पर, फिर संरचनाएँ और स्ट्रिंग '/bin/sh'
पारित की जाती है ताकि वे एक जाने वाले स्थान पर read द्वारा संग्रहीत किए जाएं, और फिर ROP श्रृंखला जारी रहती है _dl_runtime_resolve
को बुलाकर, इसे नकली संरचनाओं में system
का पता लगाने और इस पते को बुलाने के लिए इस पते के साथ इस पते को बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने के लिए इसे बुलाने
उदाहरण
शुद्ध Pwntools
आप इस तकनीक का एक उदाहरण यहाँ पा सकते हैं जिसमें अंतिम ROP श्रृंखला का बहुत अच्छा व्याख्यान है, लेकिन यहाँ उपयोग किया गया अंतिम उत्पीड़न है:
कच्चा
अन्य उदाहरण और संदर्भ
32बिट, कोई relro नहीं, कोई कैनेरी नहीं, nx, कोई pie नहीं, मूल स्मॉल बफर ओवरफ्लो और रिटर्न। इसे एक्सप्लॉइट करने के लिए बीओएफ का उपयोग किया जाता है ताकि
read
को फिर से एक.bss
सेक्शन के साथ और एक बड़े साइज में कॉल किया जा सके, जिसमेंdlresolve
फेक टेबल्स को भरने के लिएsystem
लोड किया जा सके, मुख्य में वापस लौटें और प्रारंभिक बीओएफ को फिर से उपयोग करने के लिए dlresolve को कॉल करने और फिरsystem('/bin/sh')
को कॉल करने के लिए।
Last updated