2017-05-09 63 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 –