Привет, мне поставили задачу попытаться сломать проприетарную программу веб-сервера, которую использует моя компания, мне не очень повезло. Он построен в c.взломать веб-сервер
Работает от имени root, и я пытаюсь заставить его выполнять команды. Веб-сервер принимает команды, размещенные в URL-адресе, и выполняет эти команды с префиксом. Теперь я могу передать любую команду, например «& _cmd = gettimeout» или «& _cmd = rm». Программа фактически будет запускать «префикс rm»
Префиксная программа попытается запустить эту команду в наборе каталогов, из которых нет полезных команд unix, поэтому будет просто отчитываться о команде, которая не найдена. Также невозможно передать пробелы в URL-адресе, например «& _cmd = rm% 20-f», поскольку скрипт php преобразует пробелы в +. Есть ли в любом случае форматирование строки & _cmd для запуска настоящих команд unix?
Немного странной задачи, но я студент-студент, проводя курс безопасности, и моя работа пытается найти для меня определенную работу относительно моего курса.
Спасибо за вашу помощь
Что происходит с & _cmd = rm; pwd? выполняется ли команда pwd? можете ли вы получить доступ к родительским каталогам с помощью «..»? можете ли вы получить доступ к абсолютным путям типа «/ usr/bin»? можете ли вы передать более одного аргумента, например «rm% 20-rf% 20 /»? – vaugham
Почему это помечено C? Тег удален. – pmg
Команда rm; pwd не найден Похоже, что он просто берет весь текст и анализирует его как одну команду –