По умолчанию переменные, установленные в сеансе оболочки, являются локальными для данного процесса оболочки. Это означает, что другие запускаемые Вами команды их не наследуют (они там пусты). Убедиться в этом можно, запустив дочерний процесс оболочки внутри текущего, например:
hacker@var:~$ VAR=hacker
hacker@var:~$ echo "VAR is: $VAR"
VAR is: hacker
hacker@var:~$ sh
$ echo "VAR is: $VAR"
VAR is:
В приведённом выводе приглашение $ — это приглашение оболочки sh, минималистичной реализации оболочки, запущенной как дочерний процесс основной оболочки. И она не получает переменную VAR!
Это вполне логично. Переменные Вашей оболочки могут содержать чувствительные или нестандартные данные, и Вы наверняка не хотите, чтобы они утекали в запускаемые Вами программы без явного на то указания. Как же явно разрешить передачу переменной?
Переменную нужно экспортировать. Когда Вы экспортируете переменную, она передаётся в переменные окружения дочерних процессов. С концепцией переменных окружения Вы встретитесь и в других заданиях, но её эффект уже проявится здесь. Вот пример:
hacker@var:~$ VAR=hacker
hacker@var:~$ export VAR
hacker@var:~$ sh
$ echo "VAR is: $VAR"
VAR is: hacker
Здесь дочерняя оболочка получила значение VAR и смогла его вывести! Первые две строки можно также объединить в одну:
hacker@var:~$ export VAR=hacker
hacker@var:~$ sh
$ echo "VAR is: $VAR"
VAR is: hacker
В этом задании Вам необходимо настроить окружение так, чтобы переменная SCHOOL была НЕ экспортирована и содержала значение CTF, а переменная CTF была установлена в значение SCHOOL и экспортирована.
Удачи!
Connect with SSH
Link your
SSH key, then connect with:
ssh hacker@dojo.pwn.college