Format Strings - Arbitrary Read Example
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Inicio de Lectura Binaria
Código
Compílalo con:
Explotar
El desplazamiento es 11 porque al establecer varias As y probar a la fuerza bruta con un bucle, se encontró que en el desplazamiento 11 y con 5 caracteres adicionales (tubos
|
en nuestro caso), es posible controlar una dirección completa.Usé
%11$p
con relleno hasta que la dirección fuera completamente 0x4141414141414141La carga útil de la cadena de formato está ANTES de la dirección porque el printf deja de leer en un byte nulo, por lo que si enviamos la dirección y luego la cadena de formato, el printf nunca alcanzará la cadena de formato ya que se encontrará un byte nulo antes.
La dirección seleccionada es 0x00400000 porque es donde comienza el binario (sin PIE)
Leer contraseñas
Compílalo con:
Leer desde la pila
La variable local stack_password
se almacenará en la pila, por lo que simplemente abusar de printf para mostrar el contenido de la pila es suficiente. Este es un exploit para BF las primeras 100 posiciones para filtrar las contraseñas de la pila:
En la imagen es posible ver que podemos filtrar la contraseña desde la pila en la posición 10ª
:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-545fcdfaf85cd96714bae462c037fc088c6f8bb4%252Fimage%2520%281234%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b2170abc&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-49c6c459edceb803ac56d89f84335da98d3f277f%252Fimage%2520%281233%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=fcc5287a&sv=1)
Leer datos
Ejecutando el mismo exploit pero con %p
en lugar de %s
es posible filtrar una dirección de heap desde la pila en %25$p
. Además, comparando la dirección filtrada (0xaaaab7030894
) con la posición de la contraseña en la memoria en ese proceso, podemos obtener la diferencia de direcciones:
Ahora es el momento de encontrar cómo controlar una dirección en la pila para acceder a ella desde la segunda vulnerabilidad de cadena de formato:
Y es posible ver eso en el intento 14 con el paso utilizado podemos controlar una dirección:
Explotar
Aprende y practica Hacking en AWS: HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated