php 逃转,php – 逃离壳牌回声

我试着做我的研究,只有很多方法可以调用shell命令,还有更多方法可以删除有害字符,我将以stackoverflow的形式获取专家的最佳建议.

我希望找到像我见过其他语言的东西,所以发送命令的参数实际上是通过一个函数传递的,比如:

do_command(“ls”,“ – l”,$Directory);

它将为您处理$Directory变量中的任何有害内容.我还没有用PHP发现这个.

这是我正在使用的代码:

session_start();

$AdminEmail = "random_email@gmail.com";

$CatalogEmails = array("");

$QuoteEmails = array("");

$PartsEmails = array("");

$Subject = $_SESSION['Email_Subject'];

$Body = $_SESSION['Email_Body'];

$Headers = $_SESSION['Email_Headers'];

$Type = $_SESSION['Type'];

msmtp($AdminEmail, $Subject, $Body, $Headers, "meyers");

if ($Type == "Catalog") {

foreach ($CatalogEmails as $AdditionalEmail) {

msmtp($AdditionalEmail, $Subject, $Body, $Headers, "meyers");

}

} else if ($Type == "Quote") {

foreach ($QuoteEmails as $AdditionalEmail) {

msmtp($AdditionalEmail, $Subject, $Body, $Headers, "meyers");

}

} else if ($Type == "Parts") {

foreach ($PartsEmails as $AdditionalEmail) {

msmtp($AdditionalEmail, $Subject, $Body, $Headers, "meyers");

}

}

function msmtp($To, $Subject, $Body, $Headers, $Account) {

$Email = "To: $To\nSubject: $Subject\n$Headers\n\n$Body\n";

exec("echo \"$Email\" | msmtp --account=$Account $To");

}

session_destroy();

?>

我知道有一个内置的PHP邮件功能,几乎可以解决这个问题,但我正在运行多个SMTP服务器,msmtp是我使用的程序,根据“帐户”发送电子邮件,电子邮件将在.在这种情况下,它将是“meyers”帐户.

所有会话变量都包含HTML(< br>< b>‘s等),其中也包含一些$_POST变量.我使用PHP 5.3所以没有神奇的引用.

我知道使用回声是一种可怕的方式,这就是我要进入stackoverflow的原因.我的目标是,尽管他们向我投掷任何疯狂的角色,但电子邮件仍将通过.我知道shell / bash很挑剔 – 我认为它不仅仅是逃避双引号.

我尝试使用escapeshellcmd escapeshellarg和htmlentities,它们都逃脱太多或弄乱了电子邮件中的HTML.

解决方法:

将电子邮件内容写入文件,然后将文件内容重定向为msmtp命令的输入.

file_put_contents($tempfile,$Email);

exec("msmtp --account=$Account $To < $tempfile");

标签:php,shell,command,escaping,exec

来源: https://codeday.me/bug/20190630/1340060.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值