21 lines
1.1 KiB
Markdown

# One Gadget
{{#include ../../banners/hacktricks-training.md}}
## Información Básica
[**One Gadget**](https://github.com/david942j/one_gadget) permite obtener un shell en lugar de usar **system** y **"/bin/sh". One Gadget** encontrará dentro de la biblioteca libc alguna forma de obtener un shell (`execve("/bin/sh")`) utilizando solo una **dirección**.\
Sin embargo, normalmente hay algunas restricciones, las más comunes y fáciles de evitar son como `[rsp+0x30] == NULL`. Como controlas los valores dentro del **RSP**, solo tienes que enviar algunos valores NULL más para que se evite la restricción.
![](<../../images/image (615).png>)
```python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100
```
Para la dirección indicada por One Gadget, necesitas **agregar la dirección base donde se carga `libc`**.
> [!TIP]
> One Gadget es una **gran ayuda para las técnicas de Arbitrary Write 2 Exec** y puede **simplificar las cadenas ROP** ya que solo necesitas llamar a una dirección (y cumplir con los requisitos).
{{#include ../../banners/hacktricks-training.md}}