Pointer Redirecting
स्ट्रिंग पॉइंटर्स
यदि किसी फ़ंक्शन कॉल का उपयोग स्टैक में स्थित एक स्ट्रिंग के पते का पता लगाने जा रहा है, तो इस बफर ओवरफ़्लो का दुरुपयोग करके इस पते को ओवरराइट किया जा सकता है और बाइनरी के अंदर एक विभिन्न स्ट्रिंग के पते को डाला जा सकता है।
यदि उदाहरण के लिए एक system
फ़ंक्शन कॉल का उपयोग किसी कमांड को चलाने के लिए स्ट्रिंग के पते का पता लगाने जा रहा है, तो हमलावर एक विभिन्न स्ट्रिंग के पते को स्टैक में डाल सकता है, export PATH=.:$PATH
और मौजूदा निर्देशिका में एक स्क्रिप्ट बना सकता है जिसका नाम नए स्ट्रिंग के पहले अक्षर के रूप में होगा क्योंकि यह बाइनरी द्वारा क्रियान्वित किया जाएगा।
आप इसका उदाहारण यहाँ पा सकते हैं:
32बिट, स्टैक में फ़्लैग्स स्ट्रिंग के पते को बदलें ताकि
puts
द्वारा प्रिंट किया जाए
फ़ंक्शन पॉइंटर्स
स्ट्रिंग पॉइंटर की तरह ही फ़ंक्शनों पर लागू होता है, यदि स्टैक में एक फ़ंक्शन का पता है जिसे कॉल किया जाएगा, तो इसे बदला जा सकता है (उदाहरण के लिए system
को कॉल करने के लिए)।
आप इसका उदाहारण यहाँ पा सकते हैं:
संदर्भ
Last updated