0% encontró este documento útil (0 votos)
4 vistas5 páginas

Desbordamiento de pila en GDB: Guía práctica

El documento describe el proceso de creación y ejecución de un archivo que provoca un desbordamiento de pila en un programa vulnerable. Se detallan los comandos utilizados en la terminal y en el entorno de depuración gdb para examinar el estado de la memoria y los registros. Finalmente, se explica cómo utilizar el archivo generado para ejecutar el exploit y observar los efectos del desbordamiento.

Cargado por

Marsupilami
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas5 páginas

Desbordamiento de pila en GDB: Guía práctica

El documento describe el proceso de creación y ejecución de un archivo que provoca un desbordamiento de pila en un programa vulnerable. Se detallan los comandos utilizados en la terminal y en el entorno de depuración gdb para examinar el estado de la memoria y los registros. Finalmente, se explica cómo utilizar el archivo generado para ejecutar el exploit y observar los efectos del desbordamiento.

Cargado por

Marsupilami
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

chmod a+x des

• Ejecutamos el programa que imprime 66 caracteres “A” con el comando


./des
• Ahora debemos poner la salida de este programa en un archivo nuevo para ejecutarlo
contra el programa vulnerable que llamaremos “sal” (de salida).
• En la terminal ejecutamos los comandos
./des > sal
ls -l sal
• Esto genera un archivo llamado “sal” que contiene 66 caracteres “A” y un salto de línea,
es decir, en total 67 caracteres.
• Vemos el archivo generado introduciendo el comando en una terminal
Uray Calvo Rodríguez 6
nano sal
• Probamos este fichero contra el programa vulnerable para ver si provoca un
desbordamiento de pila corrompiéndola con el tamaño dado en el archivo “des” de 66
caracteres, introduciendo en una terminal el comando
./name $(cat sal)
6. Depuración del programa
• Ejecutamos los siguientes comandos para ejecutar el programa vulnerable en el entorno
de depuración gdb, enumerar el código fuente y establecer un punto de interrupción
gdb -q name
list
break 10
Uray Calvo Rodríguez 7
• El punto de interrupción en la línea 10 nos permite examinar el estado de la memoria en
ese punto. En la línea 10, se ejecuta la operación strcpy() (que es vulnerable cuando el
tamaño de entrada supera los 50 caracteres del destino), pero el programa aun no ha
regresado de la función copiar() a la función principal main().
7. Ejecución normal
• En el entorno de depuración gdb actual ejecutamos los comandos
run A
info registers
• El código se ejecuta hasta el punto de interrupción establecido en el apartado anterior
(línea 10), y se muestran los registros.
• Los registros mas importantes son esp (parte superior de la pila) y ebp (parte inferior de
la pila) que están resaltados en blanco con el ratón.
Uray Calvo Rodríguez 8
• Examinamos el valor que contiene la primera palabra después de ebp mediante el
comando en el entorno de depuración gdb
x/x $ebp + 4
• Esto permite saber la dirección de retorno (cuadrado amarillo) que es la siguiente
instrucción a ejecutar (valor que acabara en eip) después de que regrese a la función
principal main() (valor esencial para el exploit).
• A continuación, introducimos el comando en el entorno de depuración de gdb
x/32x $esp
• Este comando examina las siguiente 32 palabras hexadecimales de la pila comenzando
en esp (eXamina 32 palabras heXadecimales, comenzando en esp).
o El color blanco resaltado con el ratón muestra las palabras desde el principio de
esp hasta el valor inclusive de ebp según la información de los registros anteriores.
Uray Calvo Rodríguez 9
o Los bytes resaltados con el cuadrado rojo es la cadena de caracteres “A” (41 en
hexadecimal) seguido del byte nulo (00) para terminar la cadena (las cadenas en
la pila se colocan al revés o estilo Little Endian).
o La palabra en el cuadro amarillo señala la dirección de retorno.
• Continuamos la ejecución normal del programa para ver la palabra “Listo!” con el
comando
continue
8. Ejecución desbordando la pila
Utilizaremos el archivo anteriormente creado llamado “sal” para provocar un
desbordamiento de pila y ver sus valores.
• A continuación, en el entorno de depuración gdb ejecutamos los comandos
run $(cat sal)
• El programa se ejecuta hasta el punto de interrupción establecido en la línea 10 e
introducimos los comandos necesarios para ver la información de los valores
info registers
x/x $ebp + 4
x/32x $esp
Uray Calvo Rodríguez 10

También podría gustarte