2017-07-11 1 views
0

hey das ist mein sehr einfacher Codekann ich php Code in url in Teil, der Anzeige im Bildschirm?

<?php 
$test= $_GET['test']; 
echo $test; 

?> 

und in url Ich schrieb dieses
test.php? Test = System ('dir')
warum sie es nicht den Befehl excute und angezeigt werden?

+0

Sie sollten niemals erlauben, ein von einem Benutzer gesendetes Skript auszuführen. – kuba

+0

Huch! Möchtest du, dass jemand deinen Server hacken kann? –

+0

Ich denke, Sie versuchen, eine PHP-Shell zu erstellen (oder zu verstehen). Niemand mit dem richtigen Verstand würde so etwas tun. (nichts für ungut) –

Antwort

0

Sie übergeben den Befehl als Zeichenfolge in der URL. Außerdem "echo" du die Saite einfach auf dem Bildschirm. Während ein Echo einen PHP-Code enthalten könnte, der ausgeführt wird, möchten Sie vielleicht stattdessen den Befehl auswerten und ausführen.

Um tatsächlich den Befehl ausführen Sie eine der folgenden Befehle verwenden:

Achten Sie auf die Dokumentation von safe-mode-exec als auch zu lesen. Besonders das folgende Bit:

safe_mode_exec_dir string Wenn PHP im abgesicherten Modus verwendet wird, system() und die anderen Funktionen Systemprogramme ausführen verweigern starten Programme, die nicht in diesem Verzeichnis befinden. Sie müssen/als Verzeichnis Trennzeichen in allen Umgebungen einschließlich Windows verwenden.

3

Sie übergeben eine Zeichenfolge über die URL, ein Echo führt keine Zeichenfolge aus. Sie müssen schreiben:

eval($test) 

, um es auszuführen. Ihr aktueller Code kann also keinen PHP-Code ausführen, aber er könnte zum Ausführen von JS-Code verwendet werden. Du solltest es filtern.

Überprüfen Sie die Dokumentation über Filter, um mehr über das Filtern zu erfahren: http://php.net/manual/en/intro.filter.php. Sie können auch eine solche Bibliothek verwenden: https://github.com/ircmaxell/filterus. Wenn Sie mit einem Framework arbeiten, überprüfen Sie die integrierten Filterfunktionen/-methoden.

Verwandte Themen