mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
4.4 KiB
4.4 KiB
Einherjar Evi
{% hint style="success" %}
AWS Hacking'i öğrenin ve uygulayın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarını paylaşarak HackTricks ve HackTricks Cloud github depolarına PR gönderin.
Temel Bilgiler
Kod
- Örneği kontrol edin: https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- Veya şu adresten bakın: https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (tcache'yi doldurmanız gerekebilir)
Amaç
- Hemen hemen herhangi bir belirli adreste bellek tahsis etmek.
Gereksinimler
- Bir parça tahsis etmek istediğimizde sahte bir parça oluşturun:
- Kontrolü atlamak için işaretçileri kendisine işaret etmesini sağlayın
- Bir parçadan diğerine bir null bayt ile bir bayt taşması yaparak
PREV_INUSE
bayrağını değiştirin. - Yanlışlıkla kullanılan parçanın
prev_size
'ına kendisi ile sahte parça arasındaki farkı belirtin - Sahte parça boyutu da kontrolü atlamak için aynı boyutta olmalıdır
- Bu parçaları oluşturmak için bir heap sızıntısına ihtiyacınız olacak.
Saldırı
- Saldırgan tarafından kontrol edilen bir parçanın içine
A
sahte bir parça oluşturulur ve korumaları atlamak içinfd
vebk
ile orijinal parçaya işaret eder - 2 diğer parça (
B
veC
) tahsis edilir B
'deki bir hata kullanılarakprev in use
biti temizlenir veprev_size
verisi, önce oluşturulan sahteA
parçasının yerindenC
parçasının tahsis edildiği yere kadar olan farkla değiştirilir- Bu
prev_size
ve sahte parçadaki boyut olanA
aynı olmalıdır kontrolü atlamak için. - Ardından, tcache doldurulur
- Sonra,
C
serbest bırakılır, böylece sahte parçaA
ile birleşir - Sonra, sahte
A
parçasında başlayacak veB
parçasını kapsayacak yeni bir parçaD
oluşturulur - Einherjar Evi burada biter
- Bu, hızlı bin saldırısı veya Tcache zehirlenmesi ile devam ettirilebilir:
B
'yi serbest bırakarak hızlı bin / Tcache'e ekleyinB
'ninfd
si üzerine yazarak, içindeB
bulunanD
parçasına işaret etmesini sağlayın- Ardından, 2 malloc yapılır ve ikincisi hedef adresi tahsis edecek
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 sıfırlanmadığı için serbest bırakıldıktan sonra hala verilerine erişmek mümkündür. Bu nedenle, bir parça sıralanmamış kutuya yerleştirilir ve içerdiği işaretçileri sızdırır (libc sızıntısı) ve ardından yeni bir heap sıralanmamış kutuya yerleştirilir ve aldığı işaretçiden bir heap adresi sızdırılır.
- baby-talk. DiceCTF 2024
strtok
'daki null bayt taşma hatası.- Örtüşen parçalar durumu elde etmek için Einherjar Evi'ni kullanın ve Tcache zehirlenmesi ile keyfi yazma ilkelini elde edin.