Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/arbitra

This commit is contained in:
Translator 2024-06-17 09:40:19 +00:00
parent 8f6cacd613
commit 81651d70e4

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)\*\* takip edin.\*\*
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* Özel [**NFT'lerimizden oluşan The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin
* **💬 [Discord grubumuza](https://discord.gg/hRep4RUj7f) katılın 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ı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>
@ -18,13 +18,13 @@ HackTricks'ı desteklemenin diğer yolları:
### **GOT: Global Offset Table**
**Global Offset Table (GOT)**, dinamik olarak bağlanmış ikili dosyalarda **harici fonksiyonların adreslerini yönetmek için kullanılan bir mekanizmadır**. Bu **adresler çalışma zamanında bilinmediği için** (dinamik bağlantı nedeniyle), GOT, bu harici sembollerin adreslerini **çözüldükten sonra dinamik olarak güncellemek için bir yol sağlar**.
**Global Offset Table (GOT)**, dinamik olarak bağlanmış ikili dosyalarda **harici fonksiyonların adreslerini yönetmek için kullanılan bir mekanizmadır**. Bu adresler, **çalışma zamanında bilinmediğinden** (dinamik bağlantı nedeniyle) GOT, bu harici sembollerin adreslerini **çözüldükten sonra dinamik olarak güncellemek için bir yol sağlar**.
GOT'taki her giriş, ikili dosyanın çağırabileceği harici kütüphanelerdeki bir sembole karşılık gelir. Bir **fonksiyon ilk kez çağrıldığında, gerçek adresi dinamik bağlayıcı tarafından çözülür ve GOT'ta depolanır**. Aynı fonksiyona yapılan sonraki çağrılar, GOT'ta depolanan adresi kullanır, böylece adresi tekrar çözme işleminin üstesinden gelinir.
GOT'taki her giriş, ikili dosyanın çağırabileceği harici kütüphanelerdeki bir sembole karşılık gelir. **Bir fonksiyon ilk çağrıldığında, dinamik bağlayıcı tarafından gerçek adresi çözülür ve GOT'ta depolanır**. Aynı fonksiyona yapılan sonraki çağrılar, GOT'ta depolanan adresi kullanır, böylece adresi tekrar çözme işleminin üstesinden gelinir.
### **PLT: Procedure Linkage Table**
**Procedure Linkage Table (PLT)**, GOT ile yakından çalışır ve harici fonksiyonlara yapılan çağrıları işlemek için bir trambolin olarak hizmet eder. Bir ikili **harici bir fonksiyonu ilk kez çağırdığında, kontrol o fonksiyonla ilişkili PLT girişine geçer**. Bu PLT girişi, fonksiyonun adresini çözmek için dinamik bağlayıcıyı çağırmaktan sorumludur eğer daha önce çözülmediyse. Adres çözüldükten sonra GOT'ta depolanır.
**Procedure Linkage Table (PLT)**, GOT ile yakından çalışır ve harici fonksiyonlara yapılan çağrıları işlemek için bir trambolin görevi görür. Bir ikili **harici bir fonksiyonu ilk kez çağırdığında, kontrol o fonksiyonla ilişkili PLT girişine geçer**. Bu PLT girişi, fonksiyonun adresini çözmek için dinamik bağlayıcıyı çağırmaktan sorumludur eğer daha önce çözülmediyse. Adres çözüldükten sonra GOT'ta depolanır.
**Bu nedenle,** harici bir fonksiyonun veya değişkenin adresi çözüldüğünde GOT girişleri doğrudan kullanılır. **PLT girişleri, bu adreslerin başlangıçta çözülmesini** dinamik bağlayıcı aracılığıyla kolaylaştırmak için kullanılır.
@ -32,13 +32,13 @@ GOT'taki her giriş, ikili dosyanın çağırabileceği harici kütüphanelerdek
### GOT'u Kontrol Et
**GOT tablosunun adresini almak için:** **`objdump -s -j .got ./exec`**
**GOT tablosunun adresini** şu komutla alın: **`objdump -s -j .got ./exec`**
![](<../../../.gitbook/assets/image (619).png>)
GEF'de **yürütüldükten sonra** **yürütülebilir** dosyayı **yükledikten sonra** GOT'ta **görülebilen** **fonksiyonları görebilirsiniz**: `gef➤ x/20x 0xDIR_GOT`
GEF'de **yürütülebilir** dosyayı **yükledikten sonra** GOT'ta **bulunan fonksiyonları görebilirsiniz**: `gef➤ x/20x 0xADDR_GOT`
![](https://github.com/carlospolop/hacktricks/blob/tr/.gitbook/assets/image%20\(620\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(5\).png)
![](<../../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>)
GEF kullanarak **hata ayıklama** oturumu başlatabilir ve GOT tablosunu görmek için **`got`** komutunu çalıştırabilirsiniz:
@ -46,13 +46,13 @@ GEF kullanarak **hata ayıklama** oturumu başlatabilir ve GOT tablosunu görmek
### GOT2Exec
Bir ikili dosyada GOT, **fonksiyonların adreslerine veya** **fonksiyon adresini yükleyecek olan PLT** bölümüne sahiptir. Bu keyfi yazmanın amacı, daha sonra **yürütülecek bir fonksiyonun GOT girişini** **örneğin `system`** **fonksiyonunun PLT'si adresiyle değiştirmektir**.
Bir ikili dosyada GOT, **fonksiyonların adreslerine veya** **fonksiyon adresini yükleyecek PLT** bölümüne sahiptir. Bu keyfi yazmanın amacı, daha sonra **çalıştırılacak bir fonksiyonun GOT girişini** örneğin **`system`** **fonksiyonunun PLT adresiyle** **üzerine yazmaktır**.
İdeal olarak, **kontrolünüzdeki parametrelerle çağrılacak bir fonksiyonun GOT'unu** **üzerine yazacaksınız** (bu nedenle sistem fonksiyonuna gönderilen parametreleri kontrol edebileceksiniz).
İdeal olarak, **kontrolünüzdeki parametrelerle çağrılacak bir fonksiyonun GOT'unu** **üzerine yazacaksınız** (böylece sistem fonksiyonuna gönderilen parametreleri kontrol edebileceksiniz).
Eğer **`system`** **kullanılmıyorsa** betik tarafından, sistem fonksiyonunun **PLT'de bir girişi olmayacak**. Bu senaryoda, önce `system` fonksiyonunun adresini sızdırmanız ve ardından GOT'u bu adrese işaret etmek için üzerine yazmanız gerekecektir.
Eğer **`system`** **betiğin içinde kullanılmıyorsa**, sistem fonksiyonunun **PLT'de bir girişi olmayacak**. Bu senaryoda, önce `system` fonksiyonunun adresini sızdırmanız ve ardından GOT'u bu adrese yönlendirmeniz gerekecektir.
PLT adreslerini **`objdump -j .plt -d ./vuln_binary`** ile görebilirsiniz
PLT adreslerini **`objdump -j .plt -d ./vuln_binary`** ile görebilirsiniz.
## **One Gadget**
@ -62,7 +62,7 @@ PLT adreslerini **`objdump -j .plt -d ./vuln_binary`** ile görebilirsiniz
## **Korunmalar**
**FullRELRO** koruması, ikili başlatıldığında tüm fonksiyonların adreslerini çözerek ve **GOT tablosunu okuma yazma**dan sonra **salt okunur** hale getirerek bu tür tekniklere karşı koruma sağlar:
**Tam RELRO** koruması, ikili başlatıldığında tüm fonksiyonların adreslerini çözerek ve ardından **GOT tablosunu salt okunur hale getirerek** bu tür tekniklere karşı koruma sağlar:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md)
@ -75,14 +75,14 @@ PLT adreslerini **`objdump -j .plt -d ./vuln_binary`** ile görebilirsiniz
<details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)\*\* takip edin.\*\*
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* Özel [**NFT'lerimizden oluşan The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin
* **💬 [Discord grubumuza](https://discord.gg/hRep4RUj7f) katılın 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ı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>