-2

我在 PHP 5.3.15 上的 VPS (Linux) 上运行 CentOS。我需要知道如何发布获取数据。当我进入页面时,它是空白的。

这是代码:

第一次尝试:

$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");

第二次尝试:

$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

查询字符串(带有 的部分?key=value)是 URL 的一部分。它仅适用于您的地址栏中。您不能使用查询字符串调用命令行脚本,也不能在包含的文件上使用它们。

  • 对于包含的文件,只需包含文件,它就可以访问您声明的任何变量:

    include("newb.php");
    
  • 对于执行的文件,将参数传递给命令,就像在命令行上一样:一次一个,用空格分隔:

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

    然后,通过 访问它们$argv

请注意,您的代码中存在严重漏洞。您正在传递要在命令行上执行的任意值。如果攻击者发布"`rm -rf /`"到您的程序,您将盲目地删除服务器上的每个文件。您绝不能盲目地将用户提交的数据作为代码执行,这实际上就是您在这里所做的。

于 2012-08-12T16:52:30.960 回答
0

无需为包含使用查询字符串(对于不起作用的初学者)。查询字符串是 URI 的一部分。你所拥有的不是 URI,它只是一些文件名。

包含的文件已经可以访问定义的变量。

PS您为变量提供的名称并不是很清晰易懂;)

PPS 你想做什么?因为几乎可以肯定有更好的方法。

于 2012-08-12T16:46:24.370 回答