One Gadget

Reading time: 2 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Podstawowe informacje

One Gadget pozwala uzyskać powłokę zamiast używać system i "/bin/sh". One Gadget znajdzie w bibliotece libc sposób na uzyskanie powłoki (execve("/bin/sh")) używając tylko jednego adresu.
Jednak zazwyczaj istnieją pewne ograniczenia, najczęstsze i łatwe do ominięcia to [rsp+0x30] == NULL. Ponieważ kontrolujesz wartości wewnątrz RSP, musisz tylko wysłać kilka dodatkowych wartości NULL, aby ograniczenie zostało ominięte.

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

Aby uzyskać adres wskazany przez One Gadget, musisz dodać adres bazowy, w którym załadowana jest libc.

tip

One Gadget to wielka pomoc dla technik Arbitrary Write 2 Exec i może upraszczać ROP łańcuchy, ponieważ musisz tylko wywołać jeden adres (i spełnić wymagania).

ARM64

Repozytorium githuba wspomina, że ARM64 jest wspierane przez narzędzie, ale podczas uruchamiania go w libc Kali 2023.3 nie znajduje żadnego gadgetu.

Angry Gadget

Z repozytorium github: Zainspirowany OneGadget, to narzędzie jest napisane w pythonie i używa angr do testowania warunków dla gadgetów wykonujących execve('/bin/sh', NULL, NULL)
Jeśli skończyły Ci się gadgety do wypróbowania z OneGadget, Angry Gadget oferuje znacznie więcej z skomplikowanymi warunkami do przetestowania!

bash
pip install angry_gadget

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

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks