Gica78R
20-05-2005, 16:49
Ciao!
Vi risulta per caso che dopo ogni accesso alle variabili d'ambiente (durante una stessa sessione), queste cambino indirizzo di memoria?
Considerate questa porzione di un programma che chiameremo getenvaddr.c:
char *addr;
addr=getenv(argv[1]);
if (addr!=NULL)
printf("Indirizzo di %s: %p\n",argv[1],addr);
dove ovviamente argv[1] contiene il nome della variabile di ambiente.
Invocando il programma ad esempio con
$ ./getenvaddr PATH
si ottiene l'indirizzo di memoria in cui dovrebbe essere memorizzata la variabile d'ambiente PATH; ma rieseguendo il programma subito dopo, tale indirizzo cambia, e cosi' ogni volta che lo si esegue!
Vi sembra normale?
Io sto cercando di realizzare un overflow di puntatore a funzione, in modo tale che il contenuto di un determinato puntatore a funzione (in un programma volutamente vulnerabile) venga sovrascritto con l'indirizzo di una var di ambiente che contiene lo shellcode... ma se ogni volta che tento di ricavare l'indirizzo della variabile poi questo cambia, non riusciro' mai a far assumere al puntatore a funzione l'indirizzo giusto.
Secondo voi dove sta l'inghippo?
Vi risulta per caso che dopo ogni accesso alle variabili d'ambiente (durante una stessa sessione), queste cambino indirizzo di memoria?
Considerate questa porzione di un programma che chiameremo getenvaddr.c:
char *addr;
addr=getenv(argv[1]);
if (addr!=NULL)
printf("Indirizzo di %s: %p\n",argv[1],addr);
dove ovviamente argv[1] contiene il nome della variabile di ambiente.
Invocando il programma ad esempio con
$ ./getenvaddr PATH
si ottiene l'indirizzo di memoria in cui dovrebbe essere memorizzata la variabile d'ambiente PATH; ma rieseguendo il programma subito dopo, tale indirizzo cambia, e cosi' ogni volta che lo si esegue!
Vi sembra normale?
Io sto cercando di realizzare un overflow di puntatore a funzione, in modo tale che il contenuto di un determinato puntatore a funzione (in un programma volutamente vulnerabile) venga sovrascritto con l'indirizzo di una var di ambiente che contiene lo shellcode... ma se ogni volta che tento di ricavare l'indirizzo della variabile poi questo cambia, non riusciro' mai a far assumere al puntatore a funzione l'indirizzo giusto.
Secondo voi dove sta l'inghippo?