Как найти адрес переменных среды в Linux - PullRequest
0 голосов
/ 01 июля 2019

В настоящее время я изучаю использование переполнения буфера в стеке с помощью переменных среды из «Искусства эксплуатации». Смысл этой главы - использовать переменную окружения для шеллкода без необходимости создавать сани NOP. Thet требует точного адреса переменной, которую я собираюсь использовать. Вот фрагмент:

С execl () используется существующая среда, но если вы используете execle (), можно указать всю среду. Если среда массив - это просто шелл-код в качестве первой строки (с указателем NULL чтобы завершить список), единственной переменной среды будет Шеллкод. Это позволяет легко рассчитать его адрес. В Linux адрес будет 0xbffffffa , минус длина шелл-кода в окружение, за вычетом длины имени исполняемой программы.

Дело в том, что я использую совершенно другую версию системы (Kali Linux 64-bit с ядром 4.19), и в моем случае базовый адрес, используемый автором (0xbffffffa), сильно отличается, и я понятия не имею, где искать для этого. Есть ли способ найти это или я должен посмотреть где-нибудь в документации?

Я предполагаю, что этот адрес находится где-то в базе стека. Или это точный адрес базы стека ..?

1 Ответ

0 голосов
/ 01 июля 2019

Хорошо, поэтому я пошел к GDB и начал просматривать адреса ниже $ rsp (с более высокими значениями), пока не получил это:

0x7fffffffeffc: ""
0x7fffffffeffd: ""
0x7fffffffeffe: ""
0x7fffffffefff: ""
0x7ffffffff000: <error: Cannot access memory at address 0x7ffffffff000>

Это все, что я хотел знать.Спасибо, что уделили время.

...