执行 HTML 编码的 PHP 代码

Executing HTML encoded PHP code

你好 Whosebug 社区,

我正在尝试从 Burp Suite 发送请求:

{"html":"<?php
$to = "example@example.com";
$subject = "Subject";
$txt = "PHP is installed"; 
$result = mail($to,$subject,$txt);
?>","author":"","location":""}

我需要修改 "html" 标签以包含一些 PHP,但是 PHP 没有被读取(其他任何标签也没有被读取),因为代码(我认为)所以我尝试 HTML 对其进行编码,但它不会执行,它只是显示为代码的纯文本。

我整天都在尝试解决这个问题,但找不到任何东西。

所以总而言之:除了我可以使用的引号之外,还有其他选择吗? (我试过 HEREDOC)或者有没有办法在没有引号的情况下执行 HTML 编码的 PHP?

双引号不是问题所在。文件扩展名可能不是发送到 PHP 解释器的类型。

如果您使用的是 Apache,则可以使用 .htaccess 指令解决此问题。

假设您刚刚发布的文件具有 .json 扩展名。然后 .htaccess 指令看起来像。

Options +ExecCGI
AddType application/x-httpd-php .php .json
AddHandler x-httpd-php5 .php .json

但是你没有回应任何东西。所以这完全有可能不是问题,而只是您的网络服务器没有配置电子邮件,因此无法发送电子邮件。 (尽管在那种情况下它应该在大多数配置中回显错误。)

您可以使用类似以下内容来测试它是否正常工作:

<?php echo "This is working now."; ?>

你可以做到这一点,但我不建议这样做。

如果您删除 PHP 标签并通过您想要 运行 作为字符串的代码,您最终将不得不通过 eval() 运行 它,这很危险,因为这意味着任何有权访问第一个脚本的人都可以在您的服务器上执行他们喜欢的任何代码。任何包含 'eval()' 的 PHP 脚本都需要非常锁定。

参考:

http://php.net/manual/en/function.eval.php

你最好只传递你希望它执行的脚本的 URL,或者类似的东西:)