hacktricks/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md

6.3 KiB
Raw Blame History

Ret2ret & Ret2pop

{% hint style="success" %} Вивчайте та практикуйте хакінг AWS: Навчання HackTricks AWS Red Team Expert (ARTE)
Вивчайте та практикуйте хакінг GCP: Навчання HackTricks GCP Red Team Expert (GRTE)

Підтримайте HackTricks
{% endhint %}

Ret2ret

Основна мета цієї техніки - спроба обійти ASLR, зловживаючи існуючим вказівником у стеку.

Основна причина переповнення стеку - це зазвичай рядки, і рядки завершуються нульовим байтом в кінці у пам'яті. Це дозволяє спробу зменшити місце, на яке вказує існуючий вказівник, який вже існує в стеці. Таким чином, якщо стек містить 0xbfffffdd, це переповнення може перетворити його на 0xbfffff00 (зверніть увагу на останній нульований байт).

Якщо ця адреса вказує на наш код оболонки в стеці, можливо зробити потік досягнення цієї адреси, додаючи адреси до інструкції ret до того моменту, поки досягнеться ця адреса.

Отже, атака буде виглядати наступним чином:

  • NOP-ковзання
  • Код оболонки
  • Перезапис стеку з EIP за допомогою адрес до ret (RET-ковзання)
  • 0x00, доданий рядком, модифікує адресу зі стеку, змушуючи її вказувати на NOP-ковзання

За посиланням це можна побачити приклад вразливого бінарного файлу, а тут - експлойт.

Ret2pop

У випадку, якщо ви можете знайти ідеальний вказівник у стеці, який ви не хочете змінювати (у ret2ret ми змінюємо останній найнижчий байт на 0x00), ви можете виконати такий самий напад ret2ret, але довжина RET-ковзання повинна бути скорочена на 1 (так щоб останній 0x00 перезаписував дані безпосередньо перед ідеальним вказівником), і остання адреса RET-ковзання повинна вказувати на pop <reg>; ret.
Таким чином, дані перед ідеальним вказівником будуть видалені зі стеку (це дані, які змінюються на 0x00), і останній ret буде вказувати на ідеальну адресу у стеці без будь-яких змін.

За посиланням це можна побачити приклад вразливого бінарного файлу, а тут - експлойт.

References

{% hint style="success" %} Вивчайте та практикуйте хакінг AWS: Навчання HackTricks AWS Red Team Expert (ARTE)
Вивчайте та практикуйте хакінг GCP: Навчання HackTricks GCP Red Team Expert (GRTE)

Підтримайте HackTricks
{% endhint %}