Hola Exploiters,
Este codigo me parecio util para averiguar en que segmento de memoria coloca el S.O. las variables de un codigo C segun sean globales, locales, etc. El codigo tambien muestra el valor de cada variable y su direccion de memoria en esa ejecución. Y alguna cosa mas.
El resultado es que las variables definidas como static en el codigo se colocan siempre en la misma posicion de memoria. Lo mismo para las globales. Tengo en mi sistema /proc/sys/kernel/randomize_va_space = 2
Es decir, en una compilacion estandar con gcc 4.4.3
gcc getseg.c -o getsegejecutamos y
root@bt:~# ./getseg
global_initialized_var is at address 0x00601028
static_initialized_var is at address 0x0060102c
static_var is at address 0x00601040
global_var is at address 0x00601044
heap_var is at address 0x01b99010
stack_var is at address 0xe590418c
the function's stack_var is at address 0xe590416c
root@bt:~# ./getseg
global_initialized_var is at address 0x00601028
static_initialized_var is at address 0x0060102c
static_var is at address 0x00601040
global_var is at address 0x00601044
heap_var is at address 0x01b03010
stack_var is at address 0x1962a25c
the function's stack_var is at address 0x1962a23c
root@bt:~#
ASLR no ha aleatorizado las posiciones de memoria de las variables globales. Las static tambien residen siempre en la misma posicion de memoria.
La version de glibc es la 2.11.1 y el codigo esta disponible en foro.overflowedminds.net/viewtopic.php?f=29&t=74
Okay, let's GDB rocks:
Have fun,
The 'Segmentation fault (core dumped)' is what we wanted to see :)
mudge[at]l0pht[.]com 10/20/95 How to write Buffer Overflows
0 comentarios :
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.