House of Einherjar
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)
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
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_INUSE
bayrağı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ı
A
sahte parçası, saldırgan tarafından kontrol edilen bir parça içinde oluşturulur vefd
vebk
ile orijinal parçaya işaret eder, böylece korumaları atlatır- 2 başka parça (
B
veC
) ayrılır B
parçasındaki bir bayt taşmasını istismar ederekprev in use
biti temizlenir veprev_size
verisi,C
parçasının ayrıldığı yer ile daha önce oluşturulan sahteA
parçası arasındaki fark ile üzerine yazılır- Bu
prev_size
ve sahte parçaA
'daki boyut aynı olmalıdır ki kontrolleri atlatabilsin. - Sonra, tcache doldurulur
- Sonra,
C
serbest bırakılır, böylece sahte parçaA
ile birleştirilir - Sonra, sahte
A
parçasında başlayacak veB
parçasını kaplayacak yeni bir parçaD
oluş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 veD
parç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
strtok
iç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)
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.