One Gadget

Reading time: 2 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Informações Básicas

One Gadget permite obter um shell em vez de usar system e "/bin/sh". One Gadget encontrará dentro da biblioteca libc alguma maneira de obter um shell (execve("/bin/sh")) usando apenas um endereço.
No entanto, normalmente existem algumas restrições, as mais comuns e fáceis de evitar são como [rsp+0x30] == NULL. Como você controla os valores dentro do RSP, você só precisa enviar mais alguns valores NULL para que a restrição seja evitada.

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

Para o endereço indicado pelo One Gadget, você precisa adicionar o endereço base onde libc está carregado.

tip

One Gadget é uma grande ajuda para técnicas de Arbitrary Write 2 Exec e pode simplificar ROP chains já que você só precisa chamar um endereço (e cumprir os requisitos).

ARM64

O repositório do github menciona que ARM64 é suportado pela ferramenta, mas ao executá-la na libc de um Kali 2023.3 não encontra nenhum gadget.

Angry Gadget

Do github repo: Inspirado pelo OneGadget, esta ferramenta é escrita em python e usa angr para testar restrições para gadgets executando execve('/bin/sh', NULL, NULL)
Se você ficou sem gadgets para tentar do OneGadget, Angry Gadget oferece muito mais com restrições complicadas para tentar!

bash
pip install angry_gadget

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

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks