House of Einherjar
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ı belirtinSahte 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 eder2 diğer parça (
B
veC
) tahsis edilirB
'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ştirilirBu
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şirSonra, sahte
A
parçasında başlayacak veB
parçasını kapsayacak yeni bir parçaD
oluşturulurEinherjar 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ınArdından, 2 malloc yapılır ve ikincisi hedef adresi tahsis edecek
Referanslar ve diğer örnekler
İş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.
Last updated