2017-07-11 5 views
0

はちょっとこれは私の非常に簡単なコード私は部分的に画面に表示するURLにphpコードを挿入できますか?

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

?> 

で、URLに私はこの
test.phpを?テスト=システム(「DIR」)
はなぜそれがコマンドをexcuteし、それを表示しないを書きましたか?

+0

ユーザーから送信されたスクリプトは実行しないでください。 – kuba

+0

Yikes!誰かがあなたのサーバーをハックできるようにしますか? –

+0

あなたはPHPシェルを作成しようとしていると思います。正しい心の誰もこのようなことはしません。 (犯罪なし) –

答えて

0

URLに文字列としてコマンドを渡しています。さらに、文字列を画面に単にエコーするだけです。エコーには実行されるエスケープされたPHPコードが含まれる可能性がありますが、代わりにコマンドを評価して実行することができます。実際にあなたが次のいずれかのコマンドを使用することができますコマンドを実行するには

は、同様にsafe-mode-execの文書を必ずお読みください。 特に以下ビット:PHPがセーフモードで使用される場合

safe_mode_exec_dir文字列、システム()及びシステムプログラムを実行する 他の機能は、このディレクトリにないプログラム を開始することを拒否する。 Windowsを含むすべての環境で、ディレクトリ を/として使用する必要があります。

3

URLで文字列を渡すと、エコーは文字列を実行しません。あなたは書いてください:

eval($test) 

実行する必要があります。したがって、現在のコードはPHPコードを実行できませんが、JSコードを実行するために使用できます。それをフィルタリングする必要があります。

フィルタの詳細については、フィルタに関するドキュメントをご覧ください。http://php.net/manual/en/intro.filter.phpこのようなライブラリを使用することもできます:https://github.com/ircmaxell/filterus。いくつかのフレームワークで作業している場合は、統合されたフィルタリング関数/メソッドをチェックアウトしてください。

関連する問題