嘿,这是我非常简单的代码:
<VirtualHost *:443>
我在网址上写道:
<?php
$test= $_GET['test'];
echo $test;
?>
为什么不执行命令,为什么不显示?
答案 0 :(得分:3)
您通过URL传递字符串,echo不会执行字符串。你需要写:
&#xA;&#xA; eval($ test)&#xA;
&#xA;&#xA; 执行它。所以你当前的代码不能执行PHP代码,但它可以用来执行JS代码。您应该过滤它。
&#xA;&#xA;查看有关过滤器的文档,了解有关过滤的更多信息: http://php.net/manual/en/intro.filter.php 。您也可以使用这样的库: https://github.com/ircmaxell/filterus 。如果您正在使用某个框架,请检查集成的过滤功能/方法。
&#xA;答案 1 :(得分:0)
您将该命令作为URL中的字符串传递。此外,您只需回复&#34;回声&#34;屏幕上的字符串。虽然echo可以包含可以运行的转义的php代码,但您可能想要评估并运行命令。
要实际运行该命令,您可以使用以下任一命令:
请务必阅读safe-mode-exec的文档。 特别是以下几点:
safe_mode_exec_dir string如果PHP用于安全模式,system()和 执行系统程序的其他函数拒绝启动程序 不在此目录中。你必须使用/作为目录 包括Windows在内的所有环境中的分隔符。