首先,这个问题是针对个人知识的,而不是针对任何类型的攻击:)希望你能相信我并给我一些提示。
我正在尝试重现我找到的邮件标题注入的示例(link-> http://www.phpsecure.info/v2/article/MailHeadersInject.en.php)。基本上它使用一个表单来获取3个参数(主题,邮件和发件人邮件),然后这些参数使用POST方法发送,并在php mail()函数中用于管理员的邮件。
一切正常,每封邮件都没有问题发送,但当我尝试注入其他参数如Cc,Bcc等时,技巧不起作用:\r
& \n
也%0A
& %0D
被解释为CL和RF。例如,如果我将my@mail.com%0ACc:foo@bar.com
放在“发件人”字段中,则在“my@mail.com”收件箱中我会找到邮件,其中包含与发送时相同的“发件人”字段({{1} })。 php或输入标签是否正确编码(或取消编码)输入?我怎样才能使它发挥作用?
希望你能理解我的坏英语,提前感谢,最好的问候。
ps:我链接的文章是2005年,最近我发现使用php函数“header()”修复了http标题的类似错误,所以我认为他们修复了电子邮件标题注入问题..但我在网上找不到任何证实这一点的内容。______________________ EDIT ________________________________________
示例工作,修改php代码中的标题:
my@mail.com%0ACc:foo@bar.com
电子邮件已从foo@foo.com和bar@bar.com正确收到
示例无法正常工作(这是我希望在您的帮助下解决的问题):
一旦我用“发送”按钮发送邮件,只有foo@foo.com会收到电子邮件,并且在“来自”详细信息(邮件内)中我会找到(第一种情况){{1 }或(第二种情况)$to = "admin@mail.com";
$sub = "this is the subject";
$msg = "this is the message";
$header = "From: foo@foo.com"."\r\n"."Cc: bar@bar.com";
$if(mail($to, $sub, $msg, $header."\n")){
echo "sent";
}else{
echo "error";
}
。
答案 0 :(得分:1)
我总是发现我需要同时使用\ r \ n才能正确发送标题。