Ereg_Replace y Include

Iniciado por Servia, 23 Mayo 2010, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

Servia

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 ? :(

Shell Root

Esto para evitar el RFI.
Código (php) [Seleccionar]
if (file_exists($_GET['archivo'].".php")) {
include ($_GET['archivo'].".php");
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Servia

Se sigue pudiendo hacer lo que dije de motrar otros archivos php del host.

xassiz_

Código (php) [Seleccionar]
if (file_exists($_GET['archivo'].".php")) {
include(str_replace(array('.','/','\\'),'',$_GET['archivo']));
}



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Shell Root

Creo que es así.
Código (php) [Seleccionar]
if (file_exists($_GET['archivo'].".php")) {
   include(str_replace(array('.','/','\\'),'',$_GET['archivo']).".php");
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

~ Yoya ~

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
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

bomba1990

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.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

Servia

Al final he hecho switch, vaya putadita escribir los 100 nombres xD

Muchísimas gracias a todos.