В настоящее время я участвую в CTF-испытании и извлек то, что, как я предполагаю, является флагом, путем внедрения относительного пути в $filename
параметр вызова функции PHP.
file_get_contents($filename)
который выполняется сервером Apache на целевой системе.
Я узнал имя файла, в котором был спрятан флаг, из подсказки в другом месте, но мне было интересно:
Существует ли файл, который обычно присутствует в системе Linux и содержит информацию о структуре каталогов и файлах, содержащихся в этих каталогах?
Я пробовал искать в нескольких файлах журналов ссылки на интересные файлы, но мне еще предстоит найти подробный список имен файлов. У меня также нет разрешения на чтение целых файлов устройств. У меня есть полный контроль над параметром, $filename
но, как я понял, я могу вставлять туда только абсолютные или относительные пути без подстановочных знаков.
решение1
Команда locate
, установленная на большинстве машин Linux, получает информацию из базы данных, содержащей все пути в системе. Задание cron поддерживает эту базу данных.
Существуют конкурирующие реализации locate
и, возможно, конкурирующие идеи относительно того, где должна находиться база данных, поэтому вам, возможно, придется перерыть несколько версий, чтобы найти все места, где она может скрываться. (Если вы уже были на машине, вы могли бы это сделать locate locatedb
!)
На моей машине Debian это/var/cache/locate/locatedb
решение2
Похоже, вы спрашиваете об инодах и суперблоке. Смотрите:http://www.linfo.org/superblockиen.wikipedia.org/wiki/Инод
Файловые системы не нуждаются в "главном файле" для отслеживания всех файлов и каталогов, содержащихся внутри, как таковых. Так что я бы сказал, что нет, нет«файл, который обычно присутствует в системе Linux и содержит информацию о структуре каталогов и файлах, содержащихся в этих каталогах».
Однако, благодаря использованию инодов и суперблока, файловые системы отслеживают все файлы и каталоги. Но распределенным, нецентрализованным образом.