Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Basurian

#1
Gracias a todos por las respuestas,
el binario fue compilado con -fno-stack-protector y -z execstack. A la vez el fichero /proc/sys/kernel/randomize_va_space fue sobreescrito con valor 0.

Sin embargo, aún así, debe existir alguna medida de protección adicional que me impide sobreescribir el EIP. He probado con un Kali 1.0.9 de 64 bit y tampoco soy capaz. Sin embargo he probado un Ubuntu 12.04 (32 bits) y consigo el resultado esperado de sobreescribir con AAAAA's el EIP.

De paso sin embargo he comprendido que la diferencia de tener una dirección de memoria el doble de larga (16 caraceteres hexadecimales) se debe a que el sistema sea 64 bit. 16 caracteres hex x 8 bytes= 64 bits.

no obstante me gustaría saber qué demonios protege la sobreescritura del EIP en el Ubuntu 14.04 o el Kali 1.0.9. ¿Puede tener que ver que ambos sean 64 bit?
#2
Bugs y Exploits / Mi EIP no se machaca con AAAA's
29 Noviembre 2014, 12:41 PM
Buenas a todos,

tengo un script muy simple para practicar y pronto me surgen dudas  :huh::

#include <string.h>
#include <stdio.h>
void func(char *arg)
{
char nombre[32];
strcpy(nombre, arg);
printf("\nHas introducido: %s\n\n", nombre);
}
int main(int argc, char *argv[])
{
func(argv[1]);
printf("Fin del programa\n\n");
return 0;
}


y ejecutándolo con GDB para ver cuándo sobreescribo el EIP:

(gdb) run AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZ

Starting program: /home/basuri/prueba AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZ

Bienvenido a Linux Exploiting AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZ

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400643 in func ()
(gdb)



Según la práctica, debería obtener una respuesta del tipo:

0x4c4c4c4c in func ()


Y no entiendo por qué me devuelve ese valor de memoria o por qué es tan largo.

Estoy practicando en un Ubuntu 14.04 64 bit sobre un Mac OS X 64 bit.

Estaría muy agradecido si alguien me echa una mano.

Saludos a todos.