Ver Mensaje Individual
  #14 (permalink)  
Antiguo 27/08/2013, 07:10
Avatar de patilanz
patilanz
 
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 13 años, 1 mes
Puntos: 29
Respuesta: Fallo de seguridad?

Cita:
Iniciado por loncho_rojas Ver Mensaje
La inyección SQL es sólo eso que te estamos indicando, algunos lo sabrán hacer con más gracia o ingenio, pero para eso están las funciones mysql como para escapar las comillas, que son el real problema, por eso no comprendo ¿QUÉ EJEMPLO MÁS QUIERES?...

A ver si comprendes... La inyección SQL de manera más bajada a tierra se da con el juego de comillas dobles o simples, por ende tienes que escaparas... no hay otro misterio en ello... si conoces de SQL sabrás que cosas te pueden vulnerar y que no... no es una cuestión de PHP. Si dices que leíste bastante, me extraña que de nuevo preguntes... Su nombre te lo dice TE INYECTAN UN SQL ¿Cómo? Pues en la vulnerabilidad de poder sobrescribir tu consulta, y eso se da porque le permites insertar comillas... no se si te queda claro el concepto...

ya te lo dijo en el primer post pateketrueke



Si había otra vulnerabilidad, ya te la hubiera dicho o te la hubieramos indicado...
Hola cierto lo que decis pero el problema es que en mi codigo no funciona la injeccion y no estoy usando mysqli.real-escape-string ... tendria algo mas que influye en esto y simplemente quiero saber lo que es ya que ahora acabo de crear otro archivo aparte y no funciona la injeccion osea pasa algo extrano y quiero averiguar lo que es.
Lo del consepto lo entiendo muy bien pero luego no funciona al intentar aplicarlo sobre mi mismo para saber si me he defendido o no.

Bueno aqu tengo el codigo en otro documento:

Código PHP:
Ver original
  1. <!DOCTYPE HTML>
  2. <meta charset="utf8">
  3. <?php
  4. if($_POST['user'] && $_POST['pw']){
  5.     $h='mysql.hostinger.es';
  6.     $u='u171863611_prueb';
  7.     $p='OU7aJ900';
  8.     $b='u171863611_prueba';
  9.     if(!$errores){
  10.         $con=mysql_connect($h,$u,$p,$b) or die(mysql_error());
  11.         $b=mysql_select_db($b,$con);
  12.         $select=mysql_query('SELECT * FROM registro_c WHERE user="'.trim($_POST['user']).'"') or die(mysql_error());
  13.         if($select){
  14.             $select=mysql_fetch_array($select);
  15.             if($select['pw']!=trim(md5($_POST['pw']))){
  16.                 $errores[]='User incorrecto! ';
  17.             }
  18.         }else{
  19.             $errores[]='User incorrecto!'; 
  20.         }
  21.     }
  22.     if($errores){
  23.         echo implode($errores,'<br />');
  24.     }else{
  25.         echo 'bien';
  26.     }
  27. }
  28. ?>
  29.  
  30. <form method="POST" action=<?php echo $_SERVER['PHP_SELF'];?>>
  31.     <input type="text" name="user" />
  32.     <input type="password" name="pw" />
  33.     <input type="submit" />
  34. </form>

Lo he probado con: " OR "1"="1 y me dice user incorrecto

Simplemente quiero saber porque ocurre esto lo del concepto y como realizan la infecciona ya lo se bueno en teoría.