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