Atualmente estou fazendo um desafio CTF e extraí o que presumo ser o sinalizador injetando um caminho relativo no $filename
parâmetro de uma chamada para a função PHP
file_get_contents($filename)
que é executado por um servidor Apache no sistema de destino.
Consegui o nome do arquivo em que o sinalizador estava oculto por meio de uma dica em algum outro ponto, mas fiquei pensando:
Existe um arquivo comumente presente em um sistema Linux que contém informações sobre a estrutura de diretórios e os arquivos contidos nesses diretórios?
Tentei pesquisar vários arquivos de log para encontrar referências a arquivos interessantes, mas ainda não encontrei uma lista detalhada de nomes de arquivos. Também não tenho permissão para ler arquivos inteiros do dispositivo. Eu tenho controle total sobre o $filename
parâmetro, mas pelo que entendi, só posso inserir caminhos absolutos ou relativos sem curingas.
Responder1
O locate
comando, instalado na maioria das máquinas Linux, obtém suas informações de um banco de dados que contém todos os caminhos do sistema. Um cron job mantém esse banco de dados.
Existem implementações concorrentes locate
e provavelmente ideias concorrentes sobre onde o banco de dados deveria estar, então você pode ter que desenterrar algumas versões para encontrar todos os lugares onde ele pode estar escondido. (Se você já estivesse na máquina, você poderia locate locatedb
!)
Na minha máquina Debian é/var/cache/locate/locatedb
Responder2
Parece que você está perguntando sobre os inodes e o superbloco. Ver:http://www.linfo.org/superblockeen.wikipedia.org/wiki/Inode
Os sistemas de arquivos não precisam de um "arquivo mestre" para controlar todos os arquivos e diretórios contidos neles, por si só. Então, eu diria que não, não há"arquivo comumente presente em um sistema Linux que contém informações sobre a estrutura de diretórios e os arquivos contidos nesses diretórios".
No entanto, através do uso de inodes e do superbloco, os sistemas de arquivos controlam todos os arquivos e diretórios. Mas de forma distribuída e não centralizada.