@wacked: So würde ich es jetzt nicht machen... Das Script öffnet die Datei ja zum schreiben und nicht zum lesen / ausführen. Aber ein Aufruf über Telnet oder ähnlich müsste gehen, wo dann per datei.php%00 das .txt umgangen wird. Somit könnte ein Code eingeschleust werden, der es ermöglicht eine Shell auf den Space zu bekommen...
Wie wäre es so?
Code:
<?php
$Datei = (preg_match("/php/",$_GET['file']) ? $_GET['file'] : "sorry_does_not_work");
$Text = $_GET['file'];
$FilePointer = fopen($Datei.".txt", "w");
fwrite($FilePointer, $Text);
fclose($FilePointer);
?>
Per Preg-Match und einem regulären Ausdruck prüfen, ob "php" im Filenamen vorkommt. Wenn ja dann ist die Datei "sorry_does_not_work.txt", wenn nicht dann ist es der GET-Wert.
@.cr4x: GET kann genauso viel übertragen. Nur wird die URL ziemlich lang, was doof ist. POST wäre natürlich auch eine Lösung. Nur kannst Du da genauso Fremdcode einschleusen, wie per GET. Und das mit der Länge... Bei Usernamen / Passwörtern macht das eigentlich nicht sooo viel Unterschied.