PIE
Reading time: 2 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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Bilgiler
PIE olarak derlenmiş bir ikili, yani Pozisyon Bağımsız Yürütülebilir, 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 yığın üzerinden format dizesi 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 kritik bir kontrol olabilir, doğru temel adresinin belirlenip belirlenmediğini 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 ofsetleri hesaplayabilirsiniz.
Atlatmalar
PIE'yi atlatmak için, yüklenmiş ikilinin bir adresini sızdırmak gereklidir, bunun için bazı seçenekler vardır:
- ASLR devre dışı: ASLR devre dışı bırakıldığında, PIE ile derlenmiş bir ikili her zaman aynı adreste yüklenecektir, bu nedenle PIE işe yaramaz çünkü nesnelerin adresleri her zaman aynı yerde olacaktır.
- Sızıntıyı almak (kolay CTF zorluklarında yaygındır, bu örneğe bakın)
- Yığındaki doğru EBP ve EIP değerlerini sızdırana kadar brute-force yapmak:
- Bir keyfi okuma zafiyetini kullanarak format dizesi gibi, ikilinin bir adresini sızdırmak (örneğin, önceki teknik gibi yığından) ikilinin temelini elde etmek ve buradan ofsetleri kullanmak için. 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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.