Array Indexing
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)
Bu kategori, dizilerdeki indekslerin işlenmesindeki hatalar nedeniyle belirli verilerin üzerine yazılmasının mümkün olduğu tüm güvenlik açıklarını içerir. Sömürü mekanizması tamamen güvenlik açığının koşullarına bağlı olduğundan, belirli bir metodolojiye sahip olmayan çok geniş bir kategoridir.
Ancak burada bazı güzel örnekler bulabilirsiniz:
Adresler için bir dizi ve o verilerin boyutları için bir dizi olmak üzere 2 çakışan dizi vardır. Birinden diğerine yazmak mümkündür, bu da boyut olarak gösterilen keyfi bir adres yazmayı sağlar. Bu, GOT tablosundaki free
fonksiyonunun adresini yazmayı ve ardından bunu system
adresi ile değiştirmeyi ve /bin/sh
ile bir bellekten free çağırmayı sağlar.
64 bit, nx yok. Bir boyutu üzerine yazarak her şeyin çift sayı olarak kullanılacağı ve en küçüğünden en büyüğüne sıralanacağı bir tür tampon taşması elde edilir, bu nedenle bu gereksinimi karşılayan bir shellcode oluşturmak gerekir, canary'nin yerinden hareket ettirilmemesi gerektiğini ve nihayetinde RIP'i ret'e işaret eden bir adresle üzerine yazmayı göz önünde bulundurmak gerekir, bu da önceki gereksinimleri karşılar ve en büyük adresi yığının başlangıcına işaret eden yeni bir adresle değiştirir (program tarafından sızdırılmıştır) böylece ret'i oraya atlamak için kullanmak mümkündür.
64 bit, relro yok, canary, nx, pie yok. Yığındaki bir dizide bir off-by-one vardır, bu da bir işaretçiyi kontrol etmeyi sağlar ve WWW'yi garanti eder (dizinin tüm sayıların toplamını, dizideki off-by-one ile üzerine yazılan adrese yazar). Yığın kontrol altındadır, bu nedenle GOT exit
adresi pop rdi; ret
ile üzerine yazılır ve yığına main
adresi eklenir (tekrar main
'e döner). GOT'daki adresi sızdırmak için puts kullanarak bir ROP zinciri kullanılır (exit
çağrılacak, bu nedenle pop rdi; ret
çağrılacak ve 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, pie. Yığın adreslerini sızdırmak için kötü bir indeksleme kullanarak libc ve heap adreslerini sızdırın. Bir tampon taşmasını kötüye kullanarak system('/bin/sh')
çağırarak bir ret2lib yapın (heap adresi bir kontrolü atlatmak için gereklidir).