Распределение памяти при передаче переменной среды в качестве аргумента командной строки

Я пытаюсь простые атаки переполнения буфера в Linux. У меня есть уязвимая программа, которая принимает аргумент командной строки. У меня есть другая программа, которая устанавливает переменную среды, в которой есть некоторый код, который я хочу выполнить (обычно шеллкод). Сейчас я пытаюсь переполнить буфер моей уязвимой программы адресом этой переменной среды. У меня есть следующие вопросы:

  1. Когда я передаю переменную окружения в качестве аргумента командной строки, копируется ли содержимое переменной в argv моей уязвимой программы?

  2. Где в адресном пространстве процесса будут храниться переменные среды (аргументы командной строки)? Это будет в стеке процессов или где-то еще?

1 ответ

Решение
  1. Да.
  2. Это до реализации.

Вы, вероятно, делаете что-то вроде:

victim "$SHELLCODE"

Если $SHELLCODE также является переменной среды, программа получит одну копию в среде, которой предшествует SHELLCODE= так что это может быть получено через getenv()и одна копия в argv список аргументов.

Другие вопросы по тегам