House of Einherjar

HackTricks'i Destekleyin

Temel Bilgiler

Kod

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ç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 fdsi ü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

Referanslar ve diğer örnekler

Last updated