-2

PHP 5.3.15 の VPS (Linux) で CentOS を実行しています。get data を投稿する方法を知る必要があります。ページに移動すると、空白です。

コードは次のとおりです。

最初の試み:

$a = $_POST['a'];
$c = $_POST['b'];
$c = $_POST['c'];
$d = $_POST['d'];
$k = include("newb.php?a=$a&b=$b&c=$c&&d=$d");
exec("php newb.php?a=$a&b=$b&c=$c&&d=$d");

2 回目の試行:

$a = $_POST['a'];
$c = $_POST['b'];
$c = $_POST['c'];
$d = $_POST['d'];
$k = include("newb.php?a=$a&b=$b&c=$c&&d=$d");
exec("php $k");
4

2 に答える 2

0

インクルードにクエリ文字列を使用する必要はありません(機能しない初心者向け)。クエリ文字列は URI の一部です。そこにあるのはURIではなく、単なるファイル名です。

インクルードされたファイルは、すでに定義済みの変数にアクセスできます。

PS変数に付けている名前は、本当に明確で理解しやすいものではありません;)

PPS 何をしようとしていますか? ほぼ確実にもっと良い方法があるからです。

于 2012-08-12T16:46:24.370 に答える
0

クエリ文字列 ( が付いている部分?key=value) は URL の一部です。アドレスバー内からのみ機能します。クエリ文字列を使用してコマンド ライン スクリプトを呼び出すことはできません。また、インクルード ファイルでそれらを使用することもできません。

  • インクルード ファイルの場合は、 file をインクルードするだけで、宣言したすべての変数にアクセスできます。

    include("newb.php");
    
  • 実行されたファイルの場合、コマンド ラインで行う場合とまったく同じように、引数をコマンドに渡します。一度に 1 つずつ、スペースで区切ります。

    exec("php newb.php $a $b $c $d");
    

    次に、 経由でアクセスします$argv

コードに重大な脆弱性があることに注意してください。コマンドラインで実行する任意の値を渡しています。攻撃者がプログラムに投稿"`rm -rf /`"した場合、サーバー上のすべてのファイルをやみくもに削除します。ユーザーが送信したデータをやみくもにコードとして実行してはなりませ。これは実際にここで行っていることです。

于 2012-08-12T16:52:30.960 に答える