Ret2ret & Reo2pop

Reading time: 3 minutes

tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks

Ret2ret

El objetivo principal de esta técnica es intentar eludir ASLR abusando de un puntero existente en la pila.

Básicamente, los desbordamientos de pila suelen ser causados por cadenas, y las cadenas terminan con un byte nulo al final en memoria. Esto permite intentar reducir el lugar apuntado por un puntero existente en la pila. Así que si la pila contenía 0xbfffffdd, este desbordamiento podría transformarlo en 0xbfffff00 (nota el último byte en cero).

Si esa dirección apunta a nuestro shellcode en la pila, es posible hacer que el flujo llegue a esa dirección agregando direcciones a la instrucción ret hasta que se alcance esta.

Por lo tanto, el ataque sería así:

  • NOP sled
  • Shellcode
  • Sobrescribir la pila desde el EIP con direcciones a ret (RET sled)
  • 0x00 agregado por la cadena modificando una dirección de la pila haciéndola apuntar al NOP sled

Siguiendo este enlace puedes ver un ejemplo de un binario vulnerable y en este el exploit.

Ret2pop

En caso de que puedas encontrar un puntero perfecto en la pila que no quieras modificar (en ret2ret cambiamos el byte más bajo final a 0x00), puedes realizar el mismo ataque ret2ret, pero la longitud del RET sled debe acortarse en 1 (así que el final 0x00 sobrescribe los datos justo antes del puntero perfecto), y la última dirección del RET sled debe apuntar a pop <reg>; ret.
De esta manera, los datos antes del puntero perfecto serán eliminados de la pila (estos son los datos afectados por el 0x00) y el último ret apuntará a la dirección perfecta en la pila sin ningún cambio.

Siguiendo este enlace puedes ver un ejemplo de un binario vulnerable y en este el exploit.

References

tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks