House of Einherjar
Last updated
Last updated
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)
Ö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)
Hemen hemen herhangi bir belirli adreste bellek tahsis etmek.
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ırgan tarafından kontrol edilen bir parçanın içine A
sahte bir parça oluşturulur ve korumaları atlamak için fd
ve bk
ile orijinal parçaya işaret eder
2 diğer parça (B
ve C
) tahsis edilir
B
'deki bir hata kullanılarak prev in use
biti temizlenir ve prev_size
verisi, önce oluşturulan sahte A
parçasının yerinden C
parçasının tahsis edildiği yere kadar olan farkla değiştirilir
Bu prev_size
ve sahte parçadaki boyut olan A
aynı olmalıdır kontrolü atlamak için.
Ardından, tcache doldurulur
Sonra, C
serbest bırakılır, böylece sahte parça A
ile birleşir
Sonra, sahte A
parçasında başlayacak ve B
parçasını kapsayacak yeni bir parça D
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 ekleyin
B
'nin fd
si üzerine yazarak, içinde B
bulunan D
parçasına işaret etmesini sağlayın
Ardından, 2 malloc yapılır ve ikincisi hedef adresi tahsis edecek
İş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.
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.