Curiosity is insubordination in its purest form. -Vladimir Nabokov

viernes, 21 de septiembre de 2012

Averigua en que segmento coloca el S.O. las variables

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 getseg
ejecutamos 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

Related Posts by Categories