6.8 KiB
WWW2Exec - GOT/PLT
AWS hackleme konusunda sıfırdan kahramana kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini alın
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR gönderin.
Temel Bilgiler
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ğinden (dinamik bağlantı nedeniyle), GOT, bu harici sembollerin adreslerinin çözüldükten sonra dinamik olarak güncellenmesini 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şleminden kaçınılır.
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şkilendirilmiş 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 saklanı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 sağlamak için dinamik bağlayıcı aracılığıyla kullanılır.
Yürütme Al
GOT'u Kontrol Et
GOT tablosunun adresini almak için: objdump -s -j .got ./exec
GEF içinde yürütülebilir dosyayı yükledikten sonra GOT içindeki fonksiyonları görebileceğinizi görebilirsiniz: gef➤ x/20x 0xDIR_GOT
GEF kullanarak hata ayıklama oturumu başlatabilir ve got
komutunu çalıştırarak got tablosunu görebilirsiniz:
GOT2Exec
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 (böylece sistem fonksiyonuna gönderilen parametreleri kontrol edebileceksiniz).
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.
libc GOT girişleri
Libc GOT'u, adresini belirlemek mümkünse (ASLR) hedef almak için güzel bir hedef olacak şekilde genellikle kısmi RELRO ile derlenir.
Libc'nin yaygın fonksiyonları, kod yürütmek için libc'nin GOT'unun üzerine yazılabilecek diğer iç fonksiyonları çağıracaktır.
Bu tekniğe ilişkin daha fazla bilgiyi burada bulabilirsiniz.
One Gadget
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %} one-gadget.md {% endcontent-ref %}
Koruma
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 {% endcontent-ref %}
Referanslar
- https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite
- https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook
AWS hackleme konusunda sıfırdan kahramana kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini alın
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR gönderin.