6.7 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öndererek paylaşın.
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ğ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.
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, 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ş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ş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 kolaylaştırmak 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'ta bulunan fonksiyonları görebilirsiniz: gef➤ x/20x 0xDIR_GOT
GEF kullanarak hata ayıklama oturumu başlatabilir ve GOT tablosunu görmek için got
komutunu çalıştırabilirsiniz:
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 yürütülecek bir fonksiyonun GOT girişini değiştirmektir örneğin system
fonksiyonunun PLT adresiyle.
İdeal olarak, kontrolünü sağladığınız 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 işaret etmek için üzerine yazmanız 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'in yaygın fonksiyonları, kod yürütme elde etmek için üzerine yazılabilecek diğer dahili fonksiyonları çağıracaktır.
Bu tekniğe ilişkin daha fazla bilgiyi burada bulabilirsiniz.
Tek Gadget
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %} one-gadget.md {% endcontent-ref %}
Korunmalar
Tam RELRO koruması, ikili başlatıldığında tüm fonksiyonların adreslerini çözerek ve GOT tablosunu salt okunur hale getirerek bu tür tekniklere karşı koruma sağlamayı amaç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öndererek paylaşın.