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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  ¿Es vulnerable a SQL Injection este código?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Es vulnerable a SQL Injection este código?  (Leído 3,109 veces)
romerixo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
¿Es vulnerable a SQL Injection este código?
« en: 25 Septiembre 2014, 22:46 pm »


Buenas, me gustaría saber si este simple código en el que se validan los datos de un formulario de login sería vulnerable a SQL Injection, y en tal caso, cual serian las sentencias, gracias ^^

Código
  1. <?php
  2.  
  3. $dbhost='xxx';
  4. $dbusername='xxx';
  5. $dbuserpass='xxx';
  6. $dbname='xxx';
  7.  
  8. // Conectar a la base de datos
  9. mysql_connect ($dbhost, $dbusername, $dbuserpass);
  10. mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
  11. if ($_POST['username']==null){
  12. echo "No introdujo usuario";
  13. }
  14. if ($_POST['username']) {
  15. //Comprobacion del envio del nombre de usuario y password
  16. $username=$_POST['username'];
  17. $password=$_POST['password'];
  18. if ($password==NULL) {
  19. echo "La password no fue enviada";
  20. }else{
  21. $query = mysql_query("SELECT username,password FROM usuarios WHERE username = '$username'") or die(mysql_error());
  22. $data = mysql_fetch_array($query);
  23. if($data['password']!=$password) {
  24. echo "$password\n";
  25. echo "Login incorrecto";
  26. }else{
  27. $query = mysql_query("SELECT username,password FROM usuarios WHERE username = '$username'") or die(mysql_error());
  28. $row = mysql_fetch_array($query);
  29. $_SESSION["k_username"] = $username;
  30. echo ("Bienvenido <strong>".$_POST['username']." </strong> ya puedes acceder a las siguientes secciones:<br><center>".'<a href="2684268413971397/addatabase.php">Registrar datos</a>'."");
  31. echo ("<br><br><center><a href='2684268413971397/visualization.php'>Buscador</a>." );
  32. echo ("<br><br><center><a href='2684268413971397/tablasasignacion.php' target='auto_blank'>((TABLAS DE ASIGNACIÓN))</a>");
  33. }
  34. }
  35. }
  36. ?>


« Última modificación: 25 Septiembre 2014, 22:49 pm por #!drvy » En línea

engel lex
Colaborador
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: ¿Es vulnerable a SQL Injection este código?
« Respuesta #1 en: 25 Septiembre 2014, 22:54 pm »

si no tienes magic quotes montado, si...


Código
  1. $username=$_POST['username'];
  2. $password=$_POST['password'];
  3. if ($password==NULL) {
  4. echo "La password no fue enviada";
  5. }else{
  6. $query = mysql_query("SELECT username,password FROM usuarios WHERE username = '$username'") or die(mysql_error());

si yo por username paso en el input algo tipo

Citar
' OR '1'='1


la consulta quedará
Código
  1. SELECT username,password FROM usuarios WHERE username = '' OR '1'='1'

lo que retornará todo...

y tienes
Citar
echo "$password\n";

así que no puedes ver el username, pero puedes usar LIMIT para sacar todas las contraseñas

por cierto, las contraseñas no se guardan en crudo, eso es pecado  :-X se guardan MINIMO en MD5 u otro algoritmo de hash


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.005


I'm fourth.


Ver Perfil WWW
Re: ¿Es vulnerable a SQL Injection este código?
« Respuesta #2 en: 25 Septiembre 2014, 23:15 pm »

si no tienes magic quotes montado, si...


Código
  1. $username=$_POST['username'];
  2. $password=$_POST['password'];
  3. if ($password==NULL) {
  4. echo "La password no fue enviada";
  5. }else{
  6. $query = mysql_query("SELECT username,password FROM usuarios WHERE username = '$username'") or die(mysql_error());

si yo por username paso en el input algo tipo


la consulta quedará
Código
  1. SELECT username,password FROM usuarios WHERE username = '' OR '1'='1'

lo que retornará todo...

y tienes
así que no puedes ver el username, pero puedes usar LIMIT para sacar todas las contraseñas

por cierto, las contraseñas no se guardan en crudo, eso es pecado  :-X se guardan MINIMO en MD5 u otro algoritmo de hash

$password no es la contraseña de la base de datos. Pero es cierto que puedes modificar la query.
En línea

engel lex
Colaborador
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: ¿Es vulnerable a SQL Injection este código?
« Respuesta #3 en: 25 Septiembre 2014, 23:22 pm »

rayos ando medio dormido hoy!

MinusFour tienes razon, es que vi la linea

Código
  1. if($data['password']!=$password) {
  2. echo "$password\n";

y vi como si fuera una asignación

pero igual retornará un error de mysql, lo que da una pista al hecho que hay una asignacion directa y sospecho que se puede inyectar algo indebido...

y no me retracto de las contraseñas en crudo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
romerixo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ¿Es vulnerable a SQL Injection este código?
« Respuesta #4 en: 25 Septiembre 2014, 23:49 pm »

Wow..rápidas respuestas, ¡Muchas gracias por responder!, Esta web es un pequeño proyectito que me hice hace bastantes años, y ya obsoleto, el código anterior es el que hay para la validación, he intentado algunas sentencias de inyection pero sin éxito, les propongo un pequeño reto si se aburren mucho para confirmar que el código es vulnerable, la url de la web es http://galaxyview.comuf.com/, tienen carta blanca para defacear o sacar el listado de usuarios. Saludos y de nuevo, Gracias por las respuestas...excelente foro!
En línea

romerixo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ¿Es vulnerable a SQL Injection este código?
« Respuesta #5 en: 26 Septiembre 2014, 17:26 pm »

mmm...¿Nadie se anima?
En línea

Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: ¿Es vulnerable a SQL Injection este código?
« Respuesta #6 en: 26 Septiembre 2014, 22:44 pm »

Prueba con expresiones regulares en PHP, lo harás más seguro ;)
En línea

Nunca me contestan -_-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
COMO SABER SI UN FORMULARIO ES VULNERABLE A SQL-INJECTION?
Nivel Web
competitivo 2 6,751 Último mensaje 30 Octubre 2004, 01:26 am
por el-brujo
Es vulnerable este?
Hacking Mobile
#Borracho.- 2 2,880 Último mensaje 16 Noviembre 2005, 13:23 pm
por #Borracho.-
Es vulnerable este script?
Nivel Web
Banti 1 1,816 Último mensaje 23 Julio 2009, 01:51 am
por Nakp
Youtube.com Vulnerable to HTML Code Injection
Nivel Web
TinKode 5 2,777 Último mensaje 5 Julio 2010, 10:41 am
por TinKode
Google.com vulnerable to XSS (HTML Code Injection)
Bugs y Exploits
TinKode 9 4,765 Último mensaje 3 Diciembre 2010, 23:33 pm
por TinKode
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines