One Gadget

Reading time: 2 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Основна інформація

One Gadget дозволяє отримати shell замість використання system та "/bin/sh". One Gadget знайде в бібліотеці libc спосіб отримати shell (execve("/bin/sh")), використовуючи лише одну адресу.
Однак, зазвичай є деякі обмеження, найпоширеніші з яких і легко уникнути - це [rsp+0x30] == NULL. Оскільки ви контролюєте значення всередині RSP, вам просто потрібно надіслати ще кілька NULL значень, щоб уникнути обмеження.

python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100

Щоб до адреси, вказаної One Gadget, потрібно додати базову адресу, де завантажено libc.

tip

One Gadget є чудовою допомогою для технік Arbitrary Write 2 Exec і може спростити ROP ланцюги, оскільки вам потрібно лише викликати одну адресу (і виконати вимоги).

ARM64

Репозиторій github згадує, що ARM64 підтримується інструментом, але при його запуску в libc Kali 2023.3 він не знаходить жодного гаджета.

Angry Gadget

З репозиторію github: Натхненний OneGadget, цей інструмент написаний на python і використовує angr для перевірки обмежень для гаджетів, що виконують execve('/bin/sh', NULL, NULL)
Якщо у вас закінчилися гаджети для спроб з OneGadget, Angry Gadget пропонує набагато більше з ускладненими обмеженнями для спроб!

bash
pip install angry_gadget

angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks