Ich mache derzeit eine CTF-Herausforderung und habe das, was ich für die Flagge halte, extrahiert, indem ich einen relativen Pfad in den $filename
Parameter eines Aufrufs der PHP-Funktion eingefügt habe
file_get_contents($filename)
das von einem Apache-Server auf dem Zielsystem ausgeführt wird.
Den Namen der Datei, in der die Flagge versteckt war, habe ich durch einen Hinweis an anderer Stelle erfahren, wunderte mich aber:
Gibt es eine Datei, die auf einem Linux-System häufig vorhanden ist und Informationen zur Verzeichnisstruktur und den in diesen Verzeichnissen enthaltenen Dateien enthält?
Ich habe versucht, mehrere Protokolldateien zu durchsuchen, um Verweise auf interessante Dateien zu finden, aber ich habe noch keine detaillierte Liste der Dateinamen gefunden. Ich habe auch keine Berechtigung, ganze Gerätedateien zu lesen. Ich habe zwar die volle Kontrolle über den $filename
Parameter, aber soweit ich weiß, kann ich dort nur absolute oder relative Pfade ohne Platzhalter einfügen.
Antwort1
Der locate
Befehl, der auf den meisten Linux-Rechnern installiert ist, bezieht seine Informationen aus einer Datenbank, die alle Pfade des Systems enthält. Diese Datenbank wird von einem Cron-Job verwaltet.
Es gibt konkurrierende Implementierungen locate
und wahrscheinlich auch konkurrierende Vorstellungen darüber, wo die Datenbank sein sollte. Sie müssen also möglicherweise mehrere Versionen durchforsten, um alle Stellen zu finden, an denen sie sich verstecken könnte. (Wenn Sie bereits auf dem Rechner wären, könnten Sie das locate locatedb
!)
Auf meiner Debian-Maschine ist es/var/cache/locate/locatedb
Antwort2
Es klingt, als würden Sie nach den Inodes und dem Superblock fragen. Siehe:http://www.linfo.org/superblockUndde.wikipedia.org/wiki/Inode
Dateisysteme brauchen per se keine „Masterdatei“, um alle darin enthaltenen Dateien und Verzeichnisse zu verwalten. Also, ich würde sagen, nein, es gibt keine„Datei, die üblicherweise auf einem Linux-System vorhanden ist und Informationen über die Verzeichnisstruktur und die in diesen Verzeichnissen enthaltenen Dateien enthält“.
Durch die Verwendung von Inodes und Superblöcken behalten Dateisysteme jedoch alle Dateien und Verzeichnisse im Auge. Allerdings auf verteilte, nicht zentralisierte Weise.