2017-05-09 21 views
0

对于学校项目,我想尝试扫描网站的漏洞,并在页面上显示响应。从PHP调用Perl程序并打印输出

为此,我正在尝试使用Uniscan。

我尝试了很多方法来获得任何响应,但它不工作。

这就是我现在所拥有的:

<?php 
echo '<pre>'; 

// Outputs all the result of shellcommand "ls", and returns 
// the last output line into $last_line. Stores the return value 
// of the shell command in $retval. 
$last_line = system('perl uniscan.pl -u https://domain.nl/ -qweds;ls', $ret$ 

// Printing additional info 
echo '</pre> 
<hr />Last line of the output: ' . $last_line . ' 
<hr />Return value: ' . $retval; 
?> 

这是响应,你唯一看到的是“ls”的命令的响应。

Responds

我希望有人能帮助我。

+0

那你为什么要运行'ls'呢? –

+0

只是为了看我是否得到任何回应 –

+0

那么你期望什么? –

回答

0

问题是www数据用户没有权限运行该脚本。

所以,当我给了他就在sudoers文件是这样的:

www-data ALL = NOPASSWD: /var/www/html/Uniscan/uniscan.pl 

一切完美!

+0

好。考虑接受你的答案,以便问题不会出现在未答复的列表中。 –

0

我认为你很难复制http://php.net/manual/en/function.system.php的代码。

除此之外,您的代码有语法错误。您向系统传递了$ret,但试图打印$retval。此外,右括号缺失。

试试这个:

$last_line = system('/usr/bin/perl uniscan.pl -u https://domain.nl/ -qweds', $retval); 

请注意,我已经提供了Perl解释器的绝对路径。

+0

好的建议,尽管我建议不要推荐perl的绝对路径,除非你知道它可以在OP的操作系统中工作。 Perl并不总是位于'/ usr/bin'中。 – ghoti

+0

仍然不工作:/ 这是他回应我得到: 最后一行输出: 返回值:13 –