ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Actividad: Realizar ataque de desbordamiento de buffer


Enviado por   •  28 de Mayo de 2019  •  Apuntes  •  871 Palabras (4 Páginas)  •  568 Visitas

Página 1 de 4

Actividades[pic 1]

Actividad: Realizar ataque de desbordamiento de buffer

Desbordamiento de bufer: Es un error de software, el cual se produce en el programa al no controlar la cantidad de datos que se copian en el área de memoria que es reservada, por lo cual, si es superior la capacidad preasignada, lo bytes que sobran se almacenan en la zona de memoria adyacente, y sobrescribir en su contenido original, de datos o códigos almacenados en memoria. Constituyendo esto un fallo de programación.

Primera parte de la actividad: Conseguir acceder a la función premio()

Primero se escribe el código del reto.c

Se deberá deshabilitar la aleatoriedad de disposición de espacios en la memoria, con la finalidad de obtener la dirección de la memoria donde existe error al ejecutar el código, y así poder explotar la vulnerabilidad.

1.- ejecutar el comando

cat /proc/sys/kernel/randomize_va_space

su valor es 2 par deshabilitar el ASLR es el comando

echo 0 > /proc/sys/kernel/randomize_va_space

el valor de ASLR es de 0

2.- se ejecuta el código reto.c

Argumentos a utilizar en esta actividad son:

gcc

Compilador

-z execstack

Poder ejecutar código en la pila

-fno-stack-protector

Desactivar la protección de la pila y poder sobrescribir la pila.

-mpreferred-stack-boundary=2

Intento de mantener la pila alineada a este power de 2 (4 para sistemas de 64 bits)

-g

Incluye en el ejecutable generado la información necesaria para poder rastrear los errores usando un depurador, tal como GDB (GNU Debugger).

reto.c

Input. Indicar el nombre del programa fuente

-o reto

Output. Escoger el nombre del ejecutable que produce el compilador

Arch

Nos muestra de cuantos bits es nuestra maquina x86_64

3.- Ejecutamos el código:

gcc -g -fno-stack-protector -z execstack -mpreferred-stack-boundary=4 -o

reto reto.c

4.- Usamos herramienta llamada debugger (gdb)

Gbd ./reto

Debugger (gdb) funciones de esta herramienta

Gdb

Debugger

run

Manda la ejecución del programa cargado por el debugger. Permite introducir los parámetros o entradas al programa

Ejemplo: run `python -c ‘print “A” * 180 ‘`

list

Permite ver el código fuente del programa que se está ejecutando (siempre y cuando está disponible)

break

Señala un breakpoint de la ejecución

Ejemplos: break 6 (breakpoint in línea 6);

b main (breackpoint en la función main)

clear

Limpia todos los breakpoint definidos

info

Permite visualizar información sobre el estado del programa.

A este comando se le necesita añadir qué es lo que se desea ver, ejemplos:

info registers

Para ver todas las opciones teclear solo info

eXamine

Permite examinar posiciones de memoria a partir de una posición origen

Ejemplo: x/40x $rsp (examina las siguientes 40 posiciones hexadecimales a partir de lo que apunta $rsp). En este ejemplo se está usando rsp por ser 64 bits, si fuera 32 bits sería esp

disas

Desensambla el código y nos muestra las direcciones físicas relacionadas con el mismo. Se le debe indicar que función.

Ejemplo: disas premio

...

Descargar como (para miembros actualizados) txt (7 Kb) pdf (151 Kb) docx (17 Kb)
Leer 3 páginas más »
Disponible sólo en Clubensayos.com