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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ejercicio Inyección SQL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio Inyección SQL  (Leído 2,468 veces)
Zedmix


Desconectado Desconectado

Mensajes: 672


B*A


Ver Perfil
Ejercicio Inyección SQL
« en: 7 Mayo 2017, 16:33 pm »

Buenas tardes, estoy tratando de realizar un ejercicio y le he echo varias pruebas, con herramientas y también con pruebas manuales y no termino de conseguir el resultado. Si alguien me podría dar una guía lo agradecería, os pongo en situación.

Tengo un login

El cual tiene la siguiente función:

Código
  1. function areUserAndPasswordValid($user, $password) {
  2. global $db, $userId;
  3.  
  4. $query = SQLite3::escapeString('SELECT userId, password FROM users WHERE username = "' . $user . '"');
  5.  
  6. $result = $db->query($query) or die ("Invalid query: " . $query . ". Field user introduced is: " . $user);
  7. $row = $result->fetchArray();
  8.  
  9. if ($row === FALSE)
  10. return FALSE;
  11.  
  12. if ($password == $row['password'])
  13. {
  14. $userId = $row['userId'];
  15. $_COOKIE['userId'] = $userId;
  16. return TRUE;
  17. }
  18. else
  19. {
  20. return FALSE;
  21. }
  22. }
  23.  

Y se me facilita una lista de posibles password, pero nunca se me facilita ningún usuario.


« Última modificación: 7 Mayo 2017, 16:38 pm por Zedmix » En línea

Conciencia, Compromiso, Rebeldia y Solidaridad


SirSocket

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Ejercicio Inyección SQL
« Respuesta #1 en: 7 Mayo 2017, 21:27 pm »

Hola

No lo he probado pero partiendo de la sentencia que tienes debes conseguir asignar a la variable user un valor que devuelva un true

SELECT userId, password
FROM users
WHERE username = "' . $user . '"'


Si en la variable user asignas algo así:

' or '1' = '1' --


el resultado de la sentencia seria como sigue:

SELECT userId, password
FROM users
WHERE username = ' ' or '1' = '1' -- '"'


lo que significa que te devuelva usuario y password cuyo nombre este vacio o 1=1

lo que significa que si una de las dos expresiones es válida devolverá registros


username = ' ' <-- No sabemos si es cierto
'1' = '1'          <--Pero esto siempre se cumple


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Inyeccion sql (mysql) Pasa x alto la inyeccion
Nivel Web
Littl3 3 6,235 Último mensaje 5 Marzo 2009, 22:56 pm
por pedrox@
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 15,643 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
ejercicio conclase pag 70 ejercicio 1
Programación C/C++
flony 2 4,279 Último mensaje 17 Octubre 2010, 12:16 pm
por Akai
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines