# Relro {{#include ../../../banners/hacktricks-training.md}} ## Relro **RELRO** का मतलब है **Relocation Read-Only**, और यह बाइनरी में एक सुरक्षा विशेषता है जो **GOT (Global Offset Table)** ओवरराइट्स से संबंधित जोखिमों को कम करने के लिए उपयोग की जाती है। आइए इस अवधारणा को स्पष्टता के लिए इसके दो अलग-अलग प्रकारों में विभाजित करें: **Partial RELRO** और **Full RELRO**। ### **Partial RELRO** **Partial RELRO** सुरक्षा बढ़ाने के लिए एक सरल दृष्टिकोण अपनाता है बिना बाइनरी के प्रदर्शन पर महत्वपूर्ण प्रभाव डाले। **GOT को प्रोग्राम के वेरिएबल्स के ऊपर मेमोरी में रखने के द्वारा, Partial RELRO का उद्देश्य बफर ओवरफ्लो को GOT तक पहुँचने और उसे भ्रष्ट करने से रोकना है**। यह **GOT को** **मनमाने लिखने** की कमजोरियों से दुरुपयोग से नहीं रोकता है। ### **Full RELRO** **Full RELRO** सुरक्षा को बढ़ाता है **GOT को पूरी तरह से पढ़ने-के-लिए-ही-योग्य बनाकर।** एक बार जब बाइनरी शुरू होती है, तो सभी फ़ंक्शन पते GOT में हल और लोड किए जाते हैं, फिर GOT को पढ़ने-के-लिए-ही-योग्य के रूप में चिह्नित किया जाता है, जो रनटाइम के दौरान इसमें किसी भी संशोधन को प्रभावी रूप से रोकता है। हालांकि, Full RELRO के साथ व्यापार-समझौता प्रदर्शन और स्टार्टअप समय के संदर्भ में है। क्योंकि इसे GOT को पढ़ने-के-लिए-ही-योग्य के रूप में चिह्नित करने से पहले सभी गतिशील प्रतीकों को स्टार्टअप पर हल करना आवश्यक है, **Full RELRO सक्षम बाइनरी में लंबे लोड समय का अनुभव हो सकता है**। यह अतिरिक्त स्टार्टअप ओवरहेड ही कारण है कि Full RELRO सभी बाइनरी में डिफ़ॉल्ट रूप से सक्षम नहीं है। यह देखना संभव है कि क्या किसी बाइनरी में Full RELRO सक्षम है: ```bash readelf -l /proc/ID_PROC/exe | grep BIND_NOW ``` ## Bypass यदि Full RELRO सक्षम है, तो इसे बायपास करने का एकमात्र तरीका यह है कि कोई और तरीका खोजा जाए जिसे मनमाने निष्पादन के लिए GOT तालिका में लिखने की आवश्यकता न हो। ध्यान दें कि LIBC का GOT आमतौर पर Partial RELRO होता है, इसलिए इसे मनमाने लिखने के साथ संशोधित किया जा सकता है। अधिक जानकारी के लिए [Targetting libc GOT entries](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries) पर जाएं। {{#include ../../../banners/hacktricks-training.md}}