Ret2ret & Reo2pop
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Основна мета цієї техніки полягає в тому, щоб спробувати обійти ASLR, зловживаючи існуючим вказівником у стеку.
В основному, переповнення стеку зазвичай викликане рядками, і рядки закінчуються нульовим байтом в кінці в пам'яті. Це дозволяє спробувати зменшити місце, на яке вказує існуючий вказівник, вже існуючий у стеку. Тож, якщо стек містив 0xbfffffdd
, це переповнення могло б перетворити його на 0xbfffff00
(зверніть увагу на останній нульовий байт).
Якщо ця адреса вказує на наш shellcode у стеку, можливо, змусити потік досягти цієї адреси, додаючи адреси до інструкції ret
до тих пір, поки вона не буде досягнута.
Отже, атака виглядатиме так:
NOP sled
Shellcode
Перезаписати стек з EIP з адресами до ret
(RET sled)
0x00, доданий рядком, модифікує адресу зі стеку, змушуючи її вказувати на NOP sled
Слідуючи за цим посиланням, ви можете побачити приклад вразливого бінарного файлу, а в цьому - експлойт.
У випадку, якщо ви можете знайти ідеальний вказівник у стеку, який не хочете модифікувати (в ret2ret
ми змінюємо останній найменший байт на 0x00
), ви можете виконати ту ж атаку ret2ret
, але довжина RET sled повинна бути скорочена на 1 (щоб останній 0x00
перезаписав дані безпосередньо перед ідеальним вказівником), а остання адреса RET sled повинна вказувати на pop <reg>; ret
.
Таким чином, дані перед ідеальним вказівником будуть видалені зі стеку (це дані, на які вплине 0x00
), а остання ret
вказуватиме на ідеальну адресу у стеку без жодних змін.
Слідуючи за цим посиланням, ви можете побачити приклад вразливого бінарного файлу, а в цьому - експлойт.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)