У меня есть переменная окружения, и я пытаюсь получить ее адрес памяти. У меня естьПолучение адреса переменной окружения
memset(&buffer, 0x90, 517);
memcpy(&buffer[517-strlen(shellcode)],shellcode,strlen(shellcode));
setenv("EGG",buffer,1);
putenv(buffer);
printf("EGG address: 0x%1x\n", getenv("EGG"));
system("bash");
Адрес для печати, который был распечатан, был 0x804b00c
. Это выглядело неверно. Я проверил его с помощью GDB x/x 0x804b00c
. Он сказал, что не может получить доступ к памяти по адресу 0x804b00c
. Итак, getenv
в основном дает мне память о мусоре. Я позвонил env
, чтобы установить переменную EGG
, и это было так.
Почему я не могу получить адрес памяти EGG
?
Это почти невозможно, если кто-либо отлаживает, кроме вас самих. Слишком много переменных. Говорить, какой адрес живет в вашей переменной среды, является спорным, он может быть по любому адресу. –
Вы понимаете, что переменные среды хранятся в вашем собственном процессе, верно? –
Зачем нужен адрес переменной окружения? Что вы собираетесь с этим делать? –