GET/POST请求中的PHP回溯



在使用PHP 5.6时,我偶然发现了通过backticks执行命令,我想知道这怎么会被证明是PHP支持的网站中的一个漏洞。

我可以理解以下代码:

<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>

允许在shell中执行$output变量内容。

我现在的问题是,是否需要围绕变量值对backtick进行硬编码,或者它们也可以是值的一部分?

例如,在前面的代码块中,backtick是围绕该值进行硬编码的,但如果$output变量是通过GET/POST REQUEST设置的,该怎么办

http://example.com/index.php?arg=`exec code`

http://example.com/index.php?arg=%60exec%20code%60

和php:

<?php
$output = $_REQUEST['arg']
echo "<pre>$output</pre>";
?>

那是易受攻击的代码吗?

提前感谢

除非对用户输入中的特殊字符进行评估,否则不会对其进行评估。

这意味着将字符串注入将被评估的上下文中(例如,eval函数用于评估为PHP,mysqli::query()函数用于评估数据库服务器的SQL,或者<script>函数用于评估浏览器的JS

相关内容

  • 没有找到相关文章

最新更新