mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
4.2 KiB
4.2 KiB
Dizi İndeksleme
Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
Temel Bilgiler
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:
- https://guyinatuxedo.github.io/11-index/swampctf19_dreamheaps/index.html
- Verilerin depolandığı adresler için bir tane ve o verilerin boyutları için bir tane olmak üzere 2 çakışan dizi bulunmaktadır. Birinden diğerine üzerine yazma yapmak mümkündür, bu da rastgele bir adresi boyut olarak belirterek yazmayı sağlar. Bu, GOT tablosundaki
free
fonksiyonunun adresini yazmayı ve ardından onusystem
adresiyle üzerine yazmayı ve hafızadan/bin/sh
ile çağırmayı mümkün kılar. - https://guyinatuxedo.github.io/11-index/csaw18_doubletrouble/index.html
- 64 bit, nx yok. Bir boyutu üzerine yazarak her şeyin çift sayı olarak kullanılacağı ve en küçükten en büyüğe sıralanacağı bir tür tampon taşmasını elde etmek mümkündür, bu nedenle bu gereksinimi karşılayan bir kabuk kodu oluşturmak gereklidir. Ayrıca, canary'nin konumundan hareket ettirilmemesi gerektiğini ve son olarak RIP'nin bir ret adresiyle üzerine yazılması gerektiğini ve bu gereksinimleri karşılayan ve yığının başlangıcına işaret eden yeni bir adresin en büyük adresi eklenmesi gerektiğini unutmamak gerekir (program tarafından sızdırılan). Bu şekilde ret'in oraya atlaması mümkün olacaktır.
- https://faraz.faith/2019-10-20-secconctf-2019-sum/
- 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 bu işaretçi, dizideki fazla olan bir hata tarafından üzerine yazılan adreslerin toplamını yazmaktadır. Yığın kontrol edilir, bu nedenle GOT
exit
adresipop rdi; ret
ile üzerine yazılır ve yığındamain
adresi eklenir (main
'e geri dönüş yapılır). Ardından, puts kullanarak GOT'taki adresin sızdırılması için bir ROP zinciri kullanılır (exit
çağrılacak, bu nedenlepop rdi; ret
ç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. - https://guyinatuxedo.github.io/14-ret_2_system/tu_guestbook/index.html
- 32 bit, relro yok, canary yok, nx yok, pie yok. Bir kötü indeksleme kullanarak libc ve yığın adreslerini sızdırmak mümkündür. Tampon taşmasını kötüye kullanarak
system('/bin/sh')
çağrısı yapmak için ret2lib kullanılır (bir kontrolü atlatmak için yığın adresine ihtiyaç vardır).