Распределение памяти при передаче переменной среды в качестве аргумента командной строки
Я пытаюсь простые атаки переполнения буфера в Linux. У меня есть уязвимая программа, которая принимает аргумент командной строки. У меня есть другая программа, которая устанавливает переменную среды, в которой есть некоторый код, который я хочу выполнить (обычно шеллкод). Сейчас я пытаюсь переполнить буфер моей уязвимой программы адресом этой переменной среды. У меня есть следующие вопросы:
Когда я передаю переменную окружения в качестве аргумента командной строки, копируется ли содержимое переменной в argv моей уязвимой программы?
Где в адресном пространстве процесса будут храниться переменные среды (аргументы командной строки)? Это будет в стеке процессов или где-то еще?
1 ответ
- Да.
- Это до реализации.
Вы, вероятно, делаете что-то вроде:
victim "$SHELLCODE"
Если $SHELLCODE
также является переменной среды, программа получит одну копию в среде, которой предшествует SHELLCODE=
так что это может быть получено через getenv()
и одна копия в argv
список аргументов.