Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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



<?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 (php) [Seleccionar]
@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 (php) [Seleccionar]
$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 (php) [Seleccionar]
if ($name!=""){
Puedes cambiarlo por esto:
Código (php) [Seleccionar]
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.