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

40 lines
2.9 KiB
Markdown
Raw Normal View History

# Relro
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin!</summary>
Diğer HackTricks'i destekleme yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
- [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
- **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
- **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## Relro
**RELRO**, **Relocation Read-Only** kelimelerinin kısaltmasıdır ve **GOT (Global Offset Table)** üzerine yazılmış riskleri azaltmak için ikili dosyalarda kullanılan bir güvenlik özelliğidir. Kavramııklığa kavuşturmak için **Partial RELRO** ve **Full RELRO** olmak üzere iki farklı türüne ayrılabilir.
### **Partial RELRO**
**Partial RELRO**, ikili dosyanın performansını önemli ölçüde etkilemeden güvenliği artırmak için daha basit bir yaklaşım benimser. **GOT'yi programın değişkenlerinin üzerine yerleştirerek, Partial RELRO, buffer taşmalarının GOT'a ulaşmasını ve onu bozmasını engellemeyi amaçlar**.
Bu, **GOT'un** keyfi yazma **zafiyetlerinden** kötüye kullanılmasını **engellemez**.
### **Full RELRO**
**Full RELRO**, **GOT ve .fini\_array** bölümünü tamamen **salt okunur** hale getirerek korumayı artırır. İkili başladığında tüm işlev adresleri çözülür ve GOT'a yüklenir, ardından GOT salt okunur olarak işaretlenir, böylece çalışma zamanında herhangi bir değişikliğe izin verilmez.
Ancak, Full RELRO ile performans ve başlatma süresi arasında bir takas yapılır. Çünkü GOT'u salt okunur olarak işaretlemek için başlangıçta tüm dinamik sembollerin çözülmesini gerektirir, **Full RELRO etkinleştirilmiş ikili dosyalar daha uzun yükleme süreleri yaşayabilir**. Bu ek başlangıç maliyeti nedeniyle Full RELRO varsayılan olarak tüm ikili dosyalarda etkinleştirilmez.
Bir ikili dosyada Full RELRO'nun etkin olup olmadığını görmek mümkündür:
```bash
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
```
## Geçme
Tam RELRO etkinleştirildiğinde, bunu atlatmanın tek yolu, keyfi yürütme elde etmek için GOT tablosuna yazma gerektirmeyen başka bir yol bulmaktır.