3.2 KiB
Pointer Redirecting
{{#include ../../banners/hacktricks-training.md}}
String pointers
यदि एक फ़ंक्शन कॉल एक स्ट्रिंग के पते का उपयोग करने जा रहा है जो स्टैक में स्थित है, तो बफ़र ओवरफ़्लो का दुरुपयोग करके इस पते को ओवरराइट करना और बाइनरी के अंदर एक अलग स्ट्रिंग का पता डालना संभव है।
यदि उदाहरण के लिए एक system
फ़ंक्शन कॉल एक कमांड निष्पादित करने के लिए एक स्ट्रिंग के पते का उपयोग करने जा रहा है, तो एक हमलावर स्टैक में एक अलग स्ट्रिंग का पता रख सकता है, export PATH=.:$PATH
और वर्तमान निर्देशिका में नई स्ट्रिंग के पहले अक्षर के नाम वाला एक स्क्रिप्ट बना सकता है क्योंकि इसे बाइनरी द्वारा निष्पादित किया जाएगा।
आप इसका एक उदाहरण यहाँ पा सकते हैं:
- https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c
- https://guyinatuxedo.github.io/04-bof_variable/tw17_justdoit/index.html
- 32bit, स्टैक में फ्लैग्स स्ट्रिंग के पते को बदलें ताकि इसे
puts
द्वारा प्रिंट किया जा सके
Function pointers
स्ट्रिंग पॉइंटर के समान लेकिन फ़ंक्शंस पर लागू, यदि स्टैक में एक फ़ंक्शन का पता है जिसे कॉल किया जाएगा, तो इसे बदलना संभव है (जैसे system
को कॉल करना)।
आप इसका एक उदाहरण यहाँ पा सकते हैं:
References
{{#include ../../banners/hacktricks-training.md}}