在旧的PHP版本中的字符串连接期间是否自动eval()?

时间:2018-11-22 17:08:32

标签: php security

在遇到安全挑战时,我遇到了以下代码:

declare const require;
const locale = localStorage.getItem('locale');
require(`./file.${locale}.json`)

最流行的解决方案涉及用一些PHP代码替换用户代理字段,例如:function write($msg){ $content=$msg; $content=$content . " " . $_SERVER['HTTP_USER_AGENT']; $fd=fopen("publicFile","a"); fwrite($fd,$content); fclose($fd); }

托管挑战的服务器使用PHP v5.6.33-0。我无法使用PHP v7.2.10在计算机上重现此行为。 User-Agent: <?php readfile("somethingInteresting"); ?>中的代码未执行,并且“ somethingInteresting”的内容也未写入到publicFile中,就像在挑战期间一样。我的问题是为什么?在5.6.33之后,它们是否更改了字符串串联在PHP中的工作方式?实际上,我很惊讶它在挑战中发挥了作用。

0 个答案:

没有答案