One Gadget

Reading time: 2 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Informazioni di Base

One Gadget consente di ottenere una shell invece di utilizzare system e "/bin/sh". One Gadget troverà all'interno della libreria libc un modo per ottenere una shell (execve("/bin/sh")) utilizzando solo un indirizzo.
Tuttavia, normalmente ci sono alcune restrizioni, le più comuni e facili da evitare sono come [rsp+0x30] == NULL. Poiché controlli i valori all'interno del RSP, devi solo inviare alcuni valori NULL in più in modo che la restrizione venga evitata.

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

Per l'indirizzo indicato da One Gadget è necessario aggiungere l'indirizzo base dove libc è caricato.

tip

One Gadget è un grande aiuto per le tecniche Arbitrary Write 2 Exec e potrebbe semplificare le catene ROP poiché è necessario chiamare solo un indirizzo (e soddisfare i requisiti).

ARM64

Il repository github menziona che ARM64 è supportato dallo strumento, ma quando viene eseguito nella libc di Kali 2023.3 non trova alcun gadget.

Angry Gadget

Dal repository github: Ispirato da OneGadget, questo strumento è scritto in python e utilizza angr per testare i vincoli per i gadget che eseguono execve('/bin/sh', NULL, NULL)
Se hai esaurito i gadget da provare da OneGadget, Angry Gadget offre molto di più con vincoli complicati da provare!

bash
pip install angry_gadget

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

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks