ncat命令在命令行上运行,但不在php脚本上运行

时间:2016-07-15 17:02:33

标签: php

我有这个命令:

echo -e 'GET / HTTP/1.0\n\n' | ncat www.website.com 80

在命令行中完全正常。但是,它并不适用于php脚本:

<?php

$html = system("echo -e 'GET / HTTP/1.0\n\n' | ncat www.website.com 80");

print $html;

?>

不是返回正确的html,而是返回&#34;您的浏览器发送了服务器无法理解的请求&#34;错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你正在编写PHP,因此你的字符串中的\n被PHP解析为实际的换行符:

$html = system("echo -e 'GET / HTTP/1.0\n\n' | ncat www.website.com 80");
                                       ^^^^^

以及最终发送给system()启动的shell的内容如下:

echo -e 'GET / HTTP/1.0

'| ncat www.website.com 80

尝试

$html = system("echo -e 'GET / HTTP/1.0\\n\\n' | ncat www.website.com 80");
                                       ^--^---note these

代替。

答案 1 :(得分:0)

它应该是这样的:

<?php

$html = system("echo 'GET / HTTP/1.0\n\n' | ncat www.website.com 80");

print $html;

?>

我不得不从echo命令中删除-e。我检查了Wireshark上的数据包,发送的是这个:

-e GET / HTTP/1.0

去图......