Array Indexing
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)
Bu kategori, dizilerdeki indekslerin işlenmesindeki hatalar nedeniyle belirli verilerin üzerine yazılabilmesine olanak tanıyan tüm zayıflıkları içerir. Saldırı mekanizması tamamen zayıflığın koşullarına bağlı olduğundan belirli bir metodolojiye sahip değildir.
Ancak burada bazı güzel örnekler bulabilirsiniz:
2 çakışan dizi bulunmaktadır, biri verilerin depolandığı adresler için diğeri ise o verilerin boyutları için. Birinden diğerini üzerine yazmak mümkündür, bu da rastgele bir adresi boyut olarak belirlemeyi sağlar. Bu, GOT tablosundaki free
fonksiyonunun adresini yazmayı ve ardından onu system
adresiyle üzerine yazmayı ve hafızadan /bin/sh
ile free'yi çağırmayı mümkün kılar.
64 bit, nx yok. Bir boyutu üzerine yazarak her şeyin çift sayı olarak kullanılacağı ve en küçükten en büyüğe doğru sıralanacağı bir tür tampon taşmasını geçmek için gereken bir kabuk kodu oluşturulması gerekmektedir, bu gereksinimi karşılayan bir adresle RIP'nin üzerine yazılması gerekmektedir ve en büyük adresin, yığının başlangıcına işaret eden yeni bir adresle değiştirilmesi gerekmektedir (program tarafından sızdırılan). Son olarak, sızdırılan adresi kullanarak GOT'ta put adresini sızdırmak için bir ROP zinciri kullanılır (exit
çağrılacak ve bu nedenle bu zincir yığında çalıştırılacaktır). Son olarak, ret2lib'i çalıştıran yeni bir ROP zinciri kullanılır.
64 bit, relro yok, canary yok, nx yok, pie yok. Yığında bir dizide bir tane fazla olan bir hata vardır ve bu, bir işaretçiyi kontrol etmeyi sağlar ve yığın, dizideki fazla olan bir hata tarafından üzerine yazılan adresin tüm sayıların toplamını yazdığı bir adresi kontrol eder. Yığın kontrol edilir, bu nedenle GOT exit
adresi pop rdi; ret
ile üzerine yazılır ve yığında main
adresi eklenir (main
'e geri dönülür). GOT'ta put adresini sızdırmak için puts kullanılarak bir ROP zinciri kullanılır (exit
çağrılacak ve bu nedenle bu zincir yığında çalıştırılacaktır). Son olarak, ret2lib'i çalıştıran yeni bir ROP zinciri kullanılır.
32 bit, relro yok, canary yok, nx yok, pie yok. Bir kötü indeksleme kullanarak libc ve yığın adreslerini sızdırmak için kötüye kullanma yapılır. Tampon taşmasını kötüye kullanarak system('/bin/sh')
çağıran bir ret2lib yapısı oluşturulur (bir kontrolü atlamak için yığın adresine ihtiyaç duyulur).