House of Einherjar
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
Kod
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c adresinden örneği kontrol edin
- Ya da https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation adresindeki örneği kontrol edin (tcache’i doldurmanız gerekebilir)
Hedef
- Hedef, neredeyse herhangi bir belirli adreste bellek ayırmaktır.
Gereksinimler
- Bir parça ayırmak istediğimizde sahte bir parça oluşturun:
- Sanity kontrollerini atlatmak için işaretçileri kendisine işaret edecek şekilde ayarlayın
PREV_INUSEbayrağını değiştirmek için bir parçadan diğerine bir null byte ile bir bayt taşması- Null ile istismar edilen parçanın
prev_size’ında kendisi ile sahte parça arasındaki farkı belirtin - Sahte parça boyutu da sanity kontrollerini atlatmak için aynı boyutta ayarlanmış olmalıdır
- Bu parçaları oluşturmak için bir heap leak’e ihtiyacınız olacak.
Saldırı
Asahte parçası, saldırgan tarafından kontrol edilen bir parça içinde oluşturulur vefdvebkile orijinal parçaya işaret eder, böylece korumaları atlatır- 2 başka parça (
BveC) ayrılır Bparçasındaki bir bayt taşmasını istismar ederekprev in usebiti temizlenir veprev_sizeverisi,Cparçasının ayrıldığı yer ile daha önce oluşturulan sahteAparçası arasındaki fark ile üzerine yazılır- Bu
prev_sizeve sahte parçaA’daki boyut aynı olmalıdır ki kontrolleri atlatabilsin. - Sonra, tcache doldurulur
- Sonra,
Cserbest bırakılır, böylece sahte parçaAile birleştirilir - Sonra, sahte
Aparçasında başlayacak veBparçasını kaplayacak yeni bir parçaDoluşturulur - Einherjar evi burada sona erer
- Bu, hızlı bin saldırısı veya Tcache zehirlenmesi ile devam edilebilir:
B’yi serbest bırakın, hızlı bin / Tcache’e ekleyinB’ninfd’si, hedef adrese işaret edecek şekilde üzerine yazılır veDparçasını istismar eder (çünkü içindeB’yi barındırır)- Sonra, 2 malloc yapılır ve ikincisi hedef adresi ayıracaktır
Referanslar ve diğer örnekler
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- CTF https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_einherjar/#2016-seccon-tinypad
- İşaretçileri serbest bıraktıktan sonra null hale gelmezler, bu nedenle verilerine erişmek hala mümkündür. Bu nedenle, bir parça sıralanmamış bin içine yerleştirilir ve içerdiği işaretçileri sızdırır (libc leak) ve ardından yeni bir heap sıralanmamış bin üzerine yerleştirilir ve aldığı işaretçiden bir heap adresi sızdırır.
- baby-talk. DiceCTF 2024
strtokiçindeki null-byte taşma hatası.- Overlapping chunks durumu elde etmek için House of Einherjar’ı kullanın ve Tcache zehirlenmesi ile bitirerek keyfi yazma ilkesini elde edin.
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.
HackTricks

