【问题标题】:Passing GET variable to php EXEC将 GET 变量传递给 php EXEC
【发布时间】:2011-04-24 13:12:45
【问题描述】:

我尝试过搜索,但运气不佳-如果在某处得到回答,我深表歉意。

我正在玩一些零碎的东西,我试图将一个 URL 变量传递给 EXEC。 这就是我正在尝试的.. sc.exe 是我必须传递 URL 的程序 - $GET_ID 变量必须来自 URL

  $GET_ID =$_GET= ['myid'];
  exec('sc.exe --url=http://localhost/DS1/test.php?ID='.$GET_ID.'&TEST=1');
  echo $GET_ID;

当我尝试这段代码时 - GET 变量似乎没有被传递,程序得到 http://localhost/DS1/test.php?ID=&TEST=1'

我做了一些搜索.. 这似乎是一种限制.. 那么解决方案/解决方法是什么?

谢谢

【问题讨论】:

  • 愚蠢的问题...但是您是否在查询字符串中包含了带有实际值的“myid”?因为它应该像你拥有的那样工作。

标签: php variables exec


【解决方案1】:

您的代码中有一个额外的=。这应该有效:

$GET_ID = $_GET['myid']; 

但是,直接将用户数据传递到命令行是非常危险的!它允许攻击者在命令行上执行任意命令。

必须使用escapeshellarg():

$GET_ID = escapeshellarg($_GET['myid']);

【讨论】:

    【解决方案2】:

    只需删除 $_GET 后的 =

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多