elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [SOLUCIONADO] Problemas para desproteger cadena y escribirla a archivo !!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] Problemas para desproteger cadena y escribirla a archivo !!  (Leído 1,830 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[SOLUCIONADO] Problemas para desproteger cadena y escribirla a archivo !!
« en: 24 Febrero 2009, 18:24 pm »

Tengo una aplicacion en donde cierta parte del sistema se encarga de editar codigos fuente de archivos PHP subidos por el usuario. La idea del sistema es que el usuario pueda subir su archivo PHP y este pueda ser interpretado por el sistema, oviamente las cuestiones de seguridad estaran en manos del usuario ya que si el script php que suba el usuario contiene bugs, ya seria responsabilidad del usuario miso, porteriormente, si el usuario desea EDITAR su archivo ya subido en el sistema, realize una formita donde muestra el contenido del archivo PHP (textarea) y el usuario puede editarlo, el problema es que despues de que edita o hace las modificaciones y pulsa el boton GUARDAR, el nuevo archivo PHP (con el mismo nombre) es guardado con exito pero las lineas de codigo que presentan una comilla doble ", tienen antepuesto un slash o barra / y oviamente el archivo ya no puede ser mostrado por el sistema web debido a que ese slash o barra no permite ser interpretado :(

Para interpretar los script PHP del usuario, utilizo solamente: include( "folder/del/usuario/scripts/archivo.php" );

Aqui les dejo un poco de codigo.

Funciones
Código
  1. <?php
  2. function proteger_cadena( $cadena )
  3. {
  4. return htmlentities($cadena, ENT_QUOTES);
  5. }
  6.  
  7. function desproteger_cadena_src( $cadena )
  8. {
  9. return html_entity_decode($cadena, ENT_QUOTES);
  10. }
  11. ?>

Formulario
Código
  1. <?php
  2. //primero leemos el ID de la noticia que fue colgada como SCRIPT, despues se consultan los datos como: url del script y nombre
  3. //despues se hace la apertura con FOPEN() en modo lenctura y se muestra en el formulario
  4.  
  5. $x= consultar_con( "NOTICIAS", "ID='". $ctl. "'" ); //consultamos noticia
  6. $buf_x= mysql_fetch_array($x); //extraemos datos
  7. $file_desc= fopen( "../".$buf_x["ARCHIVOS_URL"].$buf_x["ARCHIVOS_NOMBRE"], "r" ); //abrimos archivo PHP
  8. $msg= fread( $file_desc, filesize("../".$buf_x["ARCHIVOS_URL"].$buf_x["ARCHIVOS_NOMBRE"]) ); //leemos todo el archivo a un buffer
  9. fclose($file_desc); //cerramos archivo
  10.  
  11. //parte del formulario que muestra el contenido del script paa su edicion
  12. echo "<td>Contenido:</td><tr>";
  13. echo "<td><textarea name=\"mensaje_noticia\" class=\"estilo_03\">";
  14. echo proteger_cadena($msg); //protegemos cadena
  15. echo "</textarea></td><tr>";
  16.  
  17. echo "<td align=\"center\"><input type=\"submit\" class=\"boton_01\" value=\"Modificar Scriptin\"></td>";
  18. ?>

Sobre-escribiendo SCRIPT acutal por nueva modificacion.
Código
  1. <?php
  2. $path= "../uploads/noticias/"; //direccion de la carpeta
  3. $file_edit= consultar_datos_general( "NOTICIAS", "ID='". proteger_cadena($_GET["id_src"]). "'", "archivos_nombre" ); //obtenemos NOMBRE del archivo PHP
  4. $msg= desproteger_cadena_src($_POST["mensaje_noticia"]); //eliminamos las tags que estorben
  5.  
  6. //creamos arreglo para guardar informaion del cambio
  7. $valores= array(
  8. "id"=>"'". $_GET["id_src"]. "'",
  9. "autor_mod"=>"'". $_SESSION["log_usr"]. "'",
  10. "titulo"=>"'". proteger_cadena($_POST["titulo_noticia"]). "'",
  11. "fecha_mod"=>"'". time(). "'" );
  12.  
  13. //escribimos los datos nuevos haciando la aprtura del mismo archivo existente PHP, pero truncado a
  14. //0 para despues escribirle el buffer modifiado
  15. $src_file= fopen( $path.$file_edit, "w" ); //apertura de archivo
  16. fwrite( $src_file, $msg, strlen($msg) ); //escritura de archivo
  17. fclose($src_file); //cierre de archivo
  18.  
  19. unset($msg);
  20.  
  21. if( actualizar_bdd( "NOTICIAS", $valores )==0 )
  22. echo "Error en la Insercion de los Datos.";
  23. else
  24. echo "Datos Agregados con Exito.";
  25. ?>


« Última modificación: 25 Febrero 2009, 02:10 am por Diabliyo » En línea

HardieVon

Desconectado Desconectado

Mensajes: 181


Programming HardCore


Ver Perfil WWW
Re: Problemas para desproteger cadena y escribirla a archivo !!
« Respuesta #1 en: 24 Febrero 2009, 21:13 pm »

chale, desproteger cadenas, esa no me la sabia.  :xD

esto te puede ayudar bastante. leetelo completo.

http://www.programacionweb.net/articulos/articulo/?num=61


En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Problemas para desproteger cadena y escribirla a archivo !!
« Respuesta #2 en: 25 Febrero 2009, 02:09 am »

chale, desproteger cadenas, esa no me la sabia.  :xD

esto te puede ayudar bastante. leetelo completo.

http://www.programacionweb.net/articulos/articulo/?num=61

Listo men, fuiste la salvacion :D !!

Finalmente solo tuve que modificar lo siguiente:

Código
  1. <?php
  2. //linea antigua que me escribia el codigo con slashes
  3. fwrite( $src_file, $msg, strlen($msg) );
  4.  
  5. //liea modificada que hace todo bien :D
  6. fwrite( $src_file, stripslashes($msg), strlen($msg) );
  7. ?>

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
leer cadena de archivo en c#
.NET (C#, VB.NET, ASP)
alan03 0 3,402 Último mensaje 22 Julio 2011, 20:01 pm
por alan03
(solucionado) Problemas de acceso en un archivo de texto
.NET (C#, VB.NET, ASP)
Eleкtro 0 1,802 Último mensaje 22 Noviembre 2012, 11:30 am
por Eleкtro
[SOLUCIONADO] Problemas para importar un dll
Programación C/C++
SARGE553413 4 2,829 Último mensaje 7 Julio 2014, 17:03 pm
por SARGE553413
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines