Bueno, esta vez necesito poder hacer un
include("{$_GET['a']}.php");
Como sé que es peligroso de la hostia, quiero limitar las posibilidades (lo he hecho por php.ini, me gustaría saber como taparlo desde el php mismo)
Lo primero que he hecho es prohibir includes externos o sea que los http hacia shells ya no son posibles.
Como al hacer una prueba, he podido incluir otros archivos no deseados de mi host (../ejemplo) he hecho esto:
$_GET['a'] = ereg_replace("/", "", $_GET['a']);
$_GET['a'] = ereg_replace(".", "", $_GET['a']);
Esto teoricamente evitaría el uso de . y / pero ahora lo que me pasa esque me salta con que no existe ninguno de los archivos que hago include con normalidad y los cuales no tienen ningún . ó / .
Que domnios estoy haciendo mal ? :(
Esto para evitar el RFI.
if (file_exists($_GET['archivo'].".php")) {
include ($_GET['archivo'].".php");
}
Se sigue pudiendo hacer lo que dije de motrar otros archivos php del host.
if (file_exists($_GET['archivo'].".php")) {
include(str_replace(array('.','/','\\'),'',$_GET['archivo']));
}
Creo que es así.
if (file_exists($_GET['archivo'].".php")) {
include(str_replace(array('.','/','\\'),'',$_GET['archivo']).".php");
}
creo que es vulnerable xD...
si usan url encode no servirá de nada esa protección xD...
Puedes leer este post, para incluir archivos seguros...
http://wiki.elhacker.net/bugs-y-exploits/nivel-web/rfi#TOC-Detener-el-ataque
tan bien puedes hacer una tabla en xml sqllite, o mysql y le poner un numero a cada archivo posible que se valla a incluir en tu pagina haci el lo va a buscar dentro de la base de datos por el numero.
Al final he hecho switch, vaya putadita escribir los 100 nombres xD
Muchísimas gracias a todos.