hacktricks/binary-exploitation/common-binary-protections-and-bypasses/relro.md

40 lines
3 KiB
Markdown
Raw Normal View History

# Relro
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
## Relro
**RELRO** staan vir **Relocation Read-Only**, en dit is 'n sekuriteitskenmerk wat in binêre lêers gebruik word om die risiko's wat verband hou met **GOT (Global Offset Table)** oorskrywings te verminder. Laat ons die konsep opbreek in sy twee onderskeie tipes vir duidelikheid: **Gedeeltelike RELRO** en **Volledige RELRO**.
### **Gedeeltelike RELRO**
**Gedeeltelike RELRO** neem 'n eenvoudiger benadering om sekuriteit te verbeter sonder om die binêre lêer se prestasie aansienlik te beïnvloed. Deur **die GOT bo die program se veranderlikes in die geheue te posisioneer, mik Gedeeltelike RELRO daarop om te voorkom dat buffer-oorvloeiings die GOT bereik en dit beskadig**.&#x20;
Dit **voorkom nie dat die GOT** misbruik word **deur arbitrêre skryf** kwesbaarhede nie.
### **Volledige RELRO**
**Volledige RELRO** verhoog die beskerming deur **die GOT en .fini\_array** afdeling heeltemal **alleen-lees** te maak. Sodra die binêre lêer begin, word al die funksie-adresse opgelos en in die GOT gelaai, daarna word die GOT as alleen-lees gemerk, wat enige wysigings daaraan tydens uitvoering voorkom.
Die afweging met Volledige RELRO is egter in terme van prestasie en aanvangstyd. Omdat dit vereis dat alle dinamiese simbole by aanvang opgelos word voordat die GOT as alleen-lees gemerk word, **kan binêre lêers met Volledige RELRO wat geaktiveer is, langer laaitye ervaar**. Hierdie addisionele aanvangsoorskot is waarom Volledige RELRO nie standaard in alle binêre lêers geaktiveer word nie.
Dit is moontlik om te sien of Volledige RELRO geaktiveer is in 'n binêre lêer met:
```bash
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
```
## Oorweging
Indien Volledige RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie vereis dat daar in die GOT-tabel geskryf word om willekeurige uitvoering te kry nie.