Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/03/2011, 22:07
ZeThito
 
Fecha de Ingreso: septiembre-2010
Mensajes: 147
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Problema con Inyección SQL!

Hola s00rk, aplique la función ! pero no me ha funcionado, las inyecciones siguen teniendo efecto.

Aquí puse la función cuando recibe los $_POST[] :

Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL & ~E_NOTICE);
  3. date_default_timezone_set("America/Santiago");
  4.  
  5.     include_once('../modelo/Publicar.php');
  6.    
  7.     if(isset($_SESSION['Random']) == isset($_POST['math']) && isset($_POST['idCiudad']) && isset($_POST['idCategoria'])){
  8.    
  9.     /*function seguridad($value){
  10.         return mysql_real_escape_string($value);
  11.     }*/
  12.    
  13.     /*  function escape($str){
  14.           $search=array("\\","\0","\n","\r","\x1a","'",'"');
  15.           $replace=array("\\\\","\\0","\\n","\\r","\Z","\'",'\"');
  16.             return str_replace($search,$replace,$str);
  17.       }*/
  18.        function clean($value)
  19.        {
  20.             $check = $value;
  21.             $value = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$value);
  22.             $value = trim($value);
  23.             $value = strip_tags($value);
  24.             $value = addslashes($value);
  25.             $value = str_replace("'", "''", $value);
  26.  
  27.             if( $check != $value )
  28.             {
  29.                 $logf = fopen("logs/injection.txt", "a+");
  30.                 fprintf($logf, "Fecha: %s IP: %s Valor: %s, Corregido: %s\r\n", date("d-m-Y h:i:s A"), $_SERVER['REMOTE_ADDR'], $check, $value );
  31.                 fclose($logf);
  32.                 alertbox("Que intentas hacer? (: , Mejor mira esto xD", "http://www.google.com/");
  33.             }
  34.  
  35.             return( $value );
  36.         }
  37.  
  38.         if(!function_exists("alertbox")){
  39.             function alertbox($text, $url)
  40.             {
  41.                 echo "<body  bgcolor='#000000'><script>alert('$text');document.location = '$url'</script></body>";
  42.                 die("Javascript disabled");
  43.             }
  44.         }
  45.    
  46.  
  47.         $idCiudad                           = strip_tags(clean($_POST['idCiudad']));
  48.         $idComuna                           = strip_tags(clean($_POST['idComuna']));
  49.         $idCategoria                        = strip_tags(clean($_POST['idCategoria']));
  50.         $idSubcategoria                     = strip_tags(clean($_POST['idSubcategoria']));
  51.        
  52.         $nombre                             = strip_tags(str_replace(array( '@', '¬', '/', '&', '%' ), '', clean($_POST['nombre'])));
  53.         $email                              = strtolower(strip_tags(clean($_POST['email'])));
  54.         $telefono                           = strip_tags(clean($_POST['telefono']));
  55.         $titulo                             = strip_tags(str_replace(array( '@', '¬', '/', '&', '%' ), '', clean($_POST['titulo'])));
  56.         $contenido                          = clean($_POST['contenido']);
  57.         $precio                             = strip_tags(clean($_POST['precio']));
  58.         $tipo                               = strip_tags(clean($_POST['tipo']));
  59.         $tiempo                             = date("Y-m-d H:i:s",time());
  60.         $random                             = rand(123456789,987654321);
  61.         $archivo                            = $_FILES['file']['tmp_name'];

Al volver a inicar el programita (acunetix)



Luego :



Se aprecia que el metodo sql_regcase() dice que esta obsoleta :S
http://php.net/manual/es/function.sql-regcase.php

Bueno y al final con presionar Start y hacer las inyecciones, voy a la página y :





------------
Muestro mi método donde inserto a MySQL, el cual también he colocado la función: mysql_real_escape_string()

Código PHP:
Ver original
  1. // Método que hace inserción de una publicacion.
  2.         public function setPublicaciones($idCiudad,$idComuna,$idCategoria,$idSubcategoria,$nombre,$email,$telefono,$titulo,$contenido,$precio,$tipo,$tiempo,$imagen,$random){
  3.            
  4.             try{
  5.                 //Instanciamos la Clase Conexion para MySQL.
  6.                 $dbConectar     = new Conexion;
  7.                 $dbCon          = $dbConectar->conectarClasico();
  8.                
  9.                 if($idComuna == 0) $idComuna = 'NULL';
  10.            
  11.                
  12.                 $this->SQL      = "INSERT INTO `publicaciones` VALUES(
  13.                                                                         '',
  14.                                                                         \"" .mysql_real_escape_string($idCiudad). "\",
  15.                                                                         $idComuna,
  16.                                                                         \"" .mysql_real_escape_string($idCategoria). "\",
  17.                                                                         \"" .mysql_real_escape_string($idSubcategoria). "\",
  18.                                                                         \"" .mysql_real_escape_string($nombre). "\",
  19.                                                                         \"" .mysql_real_escape_string($email). "\",
  20.                                                                         \"" .mysql_real_escape_string($telefono). "\",
  21.                                                                         \"" .mysql_real_escape_string($titulo). "\",
  22.                                                                         \"" .mysql_real_escape_string($contenido). "\",
  23.                                                                         \"" .mysql_real_escape_string($precio). "\",
  24.                                                                         \"" .mysql_real_escape_string($tipo). "\",
  25.                                                                         \"" .mysql_real_escape_string($tiempo). "\",
  26.                                                                         \"" .mysql_real_escape_string($imagen). "\",
  27.                                                                         \"" .mysql_real_escape_string($random). "\"
  28.                                                                     )";
  29.                                                        
  30.                 mysql_query($this->SQL,$dbCon) or die(mysql_error());
  31.            
  32.                 //Cerramos conexion.
  33.                 mysql_close($dbCon);
  34.                
  35.             }catch(Exception $e){
  36.                 //Cerramos conexion.
  37.                 mysql_close($dbCon);
  38.                
  39.                 return $e;
  40.             }
  41.         }


Las Inyecciones SQL aún afectan a mi página :(

Ayuda!!!!! SOS

Última edición por ZeThito; 04/03/2011 a las 22:25