PIE
Reading time: 3 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
PIE olarak derlenmiş bir ikili, veya Position Independent Executable, programın her çalıştırıldığında farklı bellek konumlarında yüklenebileceği anlamına gelir, bu da sabit adreslerin önüne geçer.
Bu ikilileri istismar etmenin püf noktası, göreceli adresleri istismar etmektir—programın parçaları arasındaki ofsetler, mutlak konumlar değişse bile aynı kalır. PIE'yi atlatmak için, yalnızca bir adres sızdırmanız gerekir, genellikle stack'ten format string saldırıları gibi zafiyetler kullanarak. Bir adres elde ettiğinizde, diğerlerini sabit ofsetleri ile hesaplayabilirsiniz.
PIE ikililerini istismar etmede yardımcı bir ipucu, temel adreslerinin genellikle 000 ile bitmesidir çünkü bellek sayfaları rastgeleleştirme birimleri olarak 0x1000 bayt boyutundadır. Bu hizalama, bir istismar beklenildiği gibi çalışmıyorsa kontrol edilmesi gereken kritik bir durumdur, doğru temel adresin tanımlanıp tanımlanmadığını gösterir.
Ya da bunu istismarınız için kullanabilirsiniz, eğer bir adresin 0x649e1024
konumunda olduğunu sızdırırsanız, temel adresin 0x649e1000
olduğunu bilirsiniz ve buradan sadece fonksiyonların ve konumların ofsetlerini hesaplayabilirsiniz.
Atlatmalar
PIE'yi atlatmak için, yüklenen ikilinin bazı adreslerini sızdırmak gereklidir, bunun için bazı seçenekler vardır:
- ASLR devre dışı: Eğer ASLR devre dışı bırakılmışsa, PIE ile derlenmiş bir ikili her zaman aynı adreste yüklenecektir, bu nedenle PIE işe yaramayacaktır çünkü nesnelerin adresleri her zaman aynı yerde olacaktır.
- Sızdırma verilmesi (kolay CTF zorluklarında yaygındır, bu örneğe bakın)
- Doğru olanları sızdırana kadar stack'teki EBP ve EIP değerlerini brute-force ile denemek:
- Bir keyfi okuma zafiyetini kullanarak format string gibi, ikilinin bir adresini sızdırmak (örneğin, önceki teknik gibi stack'ten) için temel adresi elde etmek ve buradan ofsetleri kullanmak. Burada bir örnek bulun.
Referanslar
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.