Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: <[(x)]> en 22 Enero 2009, 20:41 pm



Título: ERROR en fclose($gestor);
Publicado por: <[(x)]> en 22 Enero 2009, 20:41 pm
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



Código:
<?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.


Título: Re: ERROR en fclose($gestor);
Publicado por: WHK en 22 Enero 2009, 21:14 pm
No le veo donde pueda estar fallando, de seguro debe ser problemas de permisos y esas cosas, prueba con
Código
  1. @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:

Código
  1. $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:
Código
  1. if ($name!=""){
Puedes cambiarlo por esto:
Código
  1. if(!$name){
Ahorras espacio  :P


Título: Re: ERROR en fclose($gestor);
Publicado por: <[(x)]> en 22 Enero 2009, 21:51 pm


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



Título: Re: ERROR en fclose($gestor);
Publicado por: WHK en 23 Enero 2009, 01:54 am
siendo txt no se ejecuta pero igual hay muchos tipos de riesgos si lo dejas así como estaba.