hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections-and-bypasses/relro.md

39 lines
5.4 KiB
Markdown

# Relro
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS और HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह **The PEASS Family** की खोज करें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
</details>
## Relro
**RELRO** का मतलब है **Relocation Read-Only**, और यह एक सुरक्षा सुविधा है जो बाइनरी में उपयोग की जाती है ताकि **GOT (Global Offset Table)** के ओवरराइट से जुड़े जोखिमों को कम किया जा सके। चलो इस अवधारणा को स्पष्टता के लिए इसके दो विभिन्न प्रकारों में विभाजित करें: **Partial RELRO** और **Full RELRO**
### **Partial RELRO**
**Partial RELRO** सुरक्षा को बढ़ाने के लिए एक सरल दृष्टिकोण अपनाता है जिससे बाइनरी के प्रदर्शन पर प्रभाव नहीं पड़ता। **GOT को कारपोरेटिंग करने और भ्रष्ट करने से रोकने के लिए 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
```
## बायपास
यदि पूर्ण RELRO सक्षम है, तो उसे बायपास करने का एकमात्र तरीका यह है कि एक और तरीका ढूंढा जाए जिसको GOT टेबल में लिखने की आवश्यकता न हो और व्यापक क्रियान्वयन प्राप्त किया जा सके।