0

我正在尝试通过带有参数的 PHP 启动一个 sh 文件,但是我根本无法让它工作:

<?php
$ip = $_GET['ip'];
$port = $_GET['port'];

echo shell_exec('sh var/www/html/Grant73565/Grant.sh $ip $port')or die("bash didn't work");
echo('Sent!');
?>

通过 ssh 手动运行文件可以正常工作,例如:

./Grant.sh 127.0.0.1 80

但是在 php 中,它只是回显“Bash 不起作用”。

据我所知,这与参数无关,因为它甚至不会在没有它们的情况下启动文件。

4

1 回答 1

1

如果要包含变量,则需要使用双引号。

echo shell_exec("sh var/www/html/Grant73565/Grant.sh $ip $port") or die("bash didn't work");

使用您当前的代码,任何人都可以更改 http 查询并在您的服务器上执行任何操作。这是一个重大的安全漏洞。

解决方案是验证输入。端口将始终是数字,所以这很简单。您可以使用正则表达式来验证 IP 地址。

于 2012-12-06T20:18:42.213 回答