holas
al probarlo me tira el siguiente error:
Warning: fclose(): supplied argument is not a valid stream resource in asd.php on line 22
comi-<[(x)]>-fini
<?php
$name=$_GET['res'];
$estt=$_GET['est'];
$dir='./user/'.$name.'.txt';
if ($name!="")
{
if (is_file($dir))
{
echo 'comi-<[(1)]>-fini' ;//el nombre ya existe
}else{
$gestor = fopen($dir, 'w');
fwrite($gestor, $estt);
fclose($gestor);
echo 'comi-<[(x)]>-fini' ;//logeado correctamente
}
}else{
echo 'comi-<[(0)]>-fini' ;//error desconosido
}
?>
Espero puedan ayudarme.
No le veo donde pueda estar fallando, de seguro debe ser problemas de permisos y esas cosas, prueba con
@fclose($gestor);
Y ten cuidado porque ese script tiene una grave falla que te permite sobreescribir el mismo php, por ejemplo:
http://127.0.0.1/metodo.php?res=peterete.php%00&est=<?php%20system($_GET['w']);%20?> (http://127.0.0.1/metodo.php?res=peterete.php%00&est=<?php%20system($_GET%5b'w'%5d);%20?>)
Verás como se te crea un archivo llamado peterete.php con una shell de ataque, eso se llama null byte attack (http://www.google.cl/search?hl=es&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=null+byte+attack&spell=1) por el carácter nulo que hace terminar el string.
Pon filtros con expresiones regulares, por ejemplo:
$name = preg_replace('|[^A-Za-z0-9_-]|i', '', $_GET['res']);
De esta forma solo aceptará carácteres alfanuméricos mas guión y guión bajo.
También en esta linea:
if ($name!=""){
Puedes cambiarlo por esto:
if(!$name){
Ahorras espacio :P
hice lo q me dijiste y =
y el archivo que crea es si o si .txt se
ejecuta ygual al llamarlo?
ej: +++/m.txt?d=algo
siendo txt no se ejecuta pero igual hay muchos tipos de riesgos si lo dejas así como estaba.