Fast Bin Attack
Last updated
Last updated
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)
Fast bin hakkında daha fazla bilgi için bu sayfayı kontrol edin:
Fast bin, tek bağlı bir liste olduğu için, diğer binlere göre çok daha az koruma vardır ve sadece serbest bırakılmış bir fast bin parçasındaki bir adresi değiştirmek, herhangi bir bellek adresinde daha sonra bir parça ayırmak için yeterlidir.
Özetle:
Ayrıntılı bir şekilde açıklanmış bir kodda tam bir örnek bulabilirsiniz: https://guyinatuxedo.github.io/28-fastbin_attack/explanation_fastbinAttack/index.html:
Eğer global değişken global_max_fast
değerini büyük bir sayı ile geçersiz kılmak mümkünse, bu, daha büyük boyutlarda hızlı bin parçaları oluşturmayı sağlar ve potansiyel olarak daha önce mümkün olmayan senaryolarda hızlı bin saldırıları gerçekleştirmeye olanak tanır. Bu durum, büyük bin saldırısı ve sıralanmamış bin saldırısı bağlamında faydalıdır.
Parçaları ayırmak, serbest bırakmak, içeriklerini okumak ve doldurmak (bir taşma açığı ile) mümkündür.
Bilgi sızıntısı için parçaları birleştirme: Teknik, temelde taşmayı kötüye kullanarak sahte bir prev_size
oluşturmak, böylece bir önceki parçanın daha büyük bir parçanın içine yerleştirilmesidir. Böylece, başka bir parçayı içeren daha büyük parçayı ayırırken, verilerini yazdırmak ve libc'ye bir adres sızdırmak mümkündür (main_arena+88
).
malloc hook'unu geçersiz kılma: Bunun için, önceki örtüşen durumu kötüye kullanarak, aynı belleğe işaret eden 2 parça elde etmek mümkündü. Bu nedenle, her ikisini de serbest bırakarak (korumaları aşmak için araya başka bir parçayı serbest bırakarak) aynı parçanın hızlı bin içinde 2 kez bulunması sağlandı. Ardından, tekrar ayırmak, bir sonraki parçanın adresini __malloc_hook
'tan biraz önce işaret edecek şekilde geçersiz kılmak (yani malloc'un serbest boyut olarak düşündüğü bir tamsayıya işaret etmesi - başka bir geçiş), tekrar ayırmak ve ardından malloc hook'larına bir adres alacak başka bir parça ayırmak mümkündü.
Sonunda oraya bir one gadget yazıldı.
Bir yığın taşması ve serbest bırakıldıktan sonra kullanma ve çift serbest bırakma vardır çünkü bir parça serbest bırakıldığında, işaretçileri yeniden kullanmak ve yeniden serbest bırakmak mümkündür.
Libc bilgi sızıntısı: Bazı parçaları serbest bırakın ve bunlar ana arena konumunun bir kısmına işaret eden bir işaretçi alacaklardır. Serbest bırakılan işaretçileri yeniden kullanabildiğiniz için, bu adresi okuyun.
Hızlı bin saldırısı: Tüm tahsisatlara işaret eden işaretçiler bir dizi içinde saklanır, bu nedenle birkaç hızlı bin parçasını serbest bırakabiliriz ve sonuncusunda bu işaretçilerin dizisine işaret eden adresi geçersiz kılabiliriz. Ardından, aynı boyutta birkaç parça ayırdığımızda önce geçerli olanı ve ardından işaretçi dizisini içeren sahte olanı alacağız. Artık bu tahsisat işaretçilerini geçersiz kılabiliriz, böylece free
'nin GOT adresi system
'e işaret eder ve ardından "/bin/sh"
'yi parça 1'e yazarak free(chunk1)
çağrısı yaparız, bu da system("/bin/sh")
'yi çalıştıracaktır.
Sıralanmamış bin içinde bir bayt taşmasını kötüye kullanarak parçaları birleştirmek ve bir libc bilgi sızıntısı elde etmek ve ardından malloc hook'unu bir one gadget adresi ile geçersiz kılmak için hızlı bin saldırısı gerçekleştiren başka bir örnek.
Bir bilgi sızıntısından sonra, sıralanmamış bin ile bir UAF kullanarak bir libc adresi ve bir PIE adresi sızdırıldı, bu CTF'nin istismarı, kontrol edilen parçalara işaret eden işaretçilerin bulunduğu bir yerde bir parça ayırmak için hızlı bin saldırısını kullandı, böylece belirli işaretçileri geçersiz kılmak ve GOT'a bir one gadget yazmak mümkün oldu.
Sıralanmamış bin saldırısı aracılığıyla kötüye kullanılan bir Hızlı Bin saldırısı bulabilirsiniz:
Hızlı bin saldırıları gerçekleştirmeden önce, libc/yığın adreslerini sızdırmak için serbest listeyi kötüye kullanmanın yaygın olduğunu unutmayın (gerekirse).
Sadece 0x100
'den büyük boyutlarda parçalar ayırabiliriz.
Sıralanmamış Bin saldırısı kullanarak global_max_fast
'ı geçersiz kılın (ASLR nedeniyle 1/16 oranında çalışır, çünkü 12 bit değiştirmemiz gerekir, ancak 16 bit değiştirmeliyiz).
Hızlı Bin saldırısı, bir küresel parça dizisini değiştirmek için. Bu, GOT'u değiştirme ve bazı işlevleri system
'e işaret etme yeteneği veren keyfi bir okuma/yazma ilkesidir.
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)