2017-05-09 11 views
0

学校プロジェクトでは、Webサイトで脆弱性をスキャンし、そのページに応答を表示します。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; 
?> 

これは応答している、あなたが見る唯一のものは「1!」コマンドの応答です。

Responds

私は誰かが私を助けることができると思います。

+0

それではなぜ 'ls'を実行していますか? –

+0

私は応答があるかどうかを確認するだけです –

+0

それでは、あなたは何を期待していますか? –

答えて

0

問題は、www-dataユーザーにそのスクリプトを実行する権限がないことでした。だから、

私は右のsudoersに彼に与えた。このようなファイル:

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

すべてが完璧に動作します!

+0

良い。質問が「未回答」リストに表示されないように回答を受け入れることを検討してください。 –

0

http://php.net/manual/en/function.system.phpからコードをコピーしていると思われます。

さらに、コードに構文エラーがあります。 $retをシステムに渡しましたが、$retvalを印刷しようとしました。また、閉じ括弧もありません。私はperlのインタプリタの絶対パスを提供してきた

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

注:

はこれを試してみてください。

+0

良い提案ですが、OPのオペレーティングシステムで動作することがわかっていない限り、perlの絶対パスを推奨しないようにアドバイスします。 Perlは必ず '/ usr/bin'にはありません。 – ghoti

+0

まだ動作していません:/ これは彼が私が得る応答です: 出力の最後の行: 戻り値:13 –

関連する問題