Ret2ret & Reo2pop

HackTricks'i Destekleyin

Ret2ret

Bu teknikteki ana amaç, mevcut bir işaretçiyi kötüye kullanarak ASLR'yi atlamaya çalışmaktır.

Temelde, yığın taşmaları genellikle dizilerden kaynaklanır ve diziler bellekte sonunda bir nul bayt ile biter. Bu, yığında zaten mevcut olan bir işaretçinin gösterdiği yeri azaltmaya çalışma olanağı sağlar. Dolayısıyla, eğer yığın 0xbfffffdd içeriyorsa, bu taşma onu 0xbfffff00'e dönüştürebilir (son sıfır baytına dikkat edin).

Eğer o adres yığında shellcode'umuza işaret ediyorsa, akışın o adrese ulaşmasını sağlamak için ret komutuna adresler ekleyerek bu adrese ulaşılabilir.

Bu nedenle saldırı şu şekilde olacaktır:

  • NOP kaydırıcısı

  • Shellcode

  • Yığını EIP'den ret adreslerine kadar üzerine yazın (RET kaydırıcısı)

  • Yığını değiştirerek bir adresi 0x00 ile ekleyerek (yığınındaki bir adresi NOP kaydırıcısına işaret edecek şekilde değiştirerek)

Bu bağlantıyı takip ederek savunmasız bir ikili örneğini ve bu bağlantıdaki saldırıyı görebilirsiniz.

Ret2pop

Eğer değiştirmek istemediğiniz yığında mükemmel bir işaretçi bulabilirseniz (ret2rette en düşük baytı 0x00 ile değiştirdik), aynı ret2ret saldırısını gerçekleştirebilirsiniz, ancak RET kaydırıcısının uzunluğu 1 azaltılmalıdır (böylece son 0x00 mükemmel işaretçiden önceki veriyi üzerine yazar), ve RET kaydırıcısının son adresi pop <reg>; ret'ye işaret etmelidir. Bu şekilde, mükemmel işaretçiden önceki veri yığından kaldırılacaktır (bu, 0x00 tarafından etkilenen veridir) ve son ret mükemmel adrese işaret edecektir ve yığında herhangi bir değişiklik olmadan.

Bu bağlantıyı takip ederek savunmasız bir ikili örneğini ve bu bağlantıdaki saldırıyı görebilirsiniz.

Referanslar

HackTricks'i Destekleyin

Last updated