Ret2plt
Temel Bilgiler
Bu teknikteki amaç, PLT'den bir işlevin adresini sızdırmak ve ASLR'yi atlamak için kullanmaktır. Bu, örneğin, libc'den puts
işlevinin adresini sızdırırsanız, ardından libc
'nin tabanını hesaplayabilir ve diğer işlevlere erişmek için system
gibi işlevlere erişmek için ofsetleri hesaplayabilirsiniz.
Bu, pwntools
yüküyle şu şekilde yapılabilir (buradan):
puts
(PLT adresinden kullanılarak) puts
'ın GOT'ta (Global Offset Table) bulunan adresi ile çağrıldığını gözlemleyin. Bu, puts
GOT girdisini yazdırdığında, bu girdinin hafızadaki puts
'ın tam adresini içereceği anlamına gelir.
Ayrıca, exploit içinde main
in adresinin kullanıldığına dikkat edin, böylece puts
işlemini bitirdiğinde, binary çıkış yapmak yerine main
i tekrar çağırır (bu nedenle sızdırılan adres geçerli olmaya devam eder).
Bu işlem için çalışması için binary'nin PIE ile derlenmemiş olması veya PLT, GOT ve main adreslerini bilmek için PIE'yi atlatmak için bir sızıntı bulmuş olmanız gerekir. Aksi takdirde, önce PIE'yi atlatmanız gerekir.
Bu atlatmanın tam örneğini burada bulabilirsiniz. Bu, o örneğin son exploit'iydi:
Diğer örnekler ve Referanslar
64 bit, ASLR etkin ancak PIE yok, ilk adım, bir taşma oluşturarak canary'nin 0x00 baytına kadar doldurulması ve ardından puts'u çağırarak sızdırmaktır. Canary ile puts'u çağırmak için ROP cihazı oluşturulur ve GOT'tan puts adresini sızdırmak için bir ROP cihazı ve
system('/bin/sh')
çağırmak için bir ROP cihazı oluşturulur.64 bit, ASLR etkin, canary yok, ana fonksiyondan bir çocuk fonksiyonundan yığın taşması. Puts'u çağırmak için ROP cihazı oluşturarak GOT'tan puts adresini sızdırmak ve ardından bir tane cihazı çağırmak için.
Last updated