Ayuda con esta inyeccion SQL

Iniciado por 4rkn63l, 7 Agosto 2010, 00:15 AM

0 Miembros y 1 Visitante están viendo este tema.

4rkn63l

hola, estoy aprendiendo sobre inyecciones sql y para ello instale un servidor y todo lo demas necesario en mi pc para practicar, he hecho una pagina con el tipico login vulnerable donde se pide un nombre de usuario y una contraseña,inicialmente para facilitarme las cosas he desactivado las magic quotes en php. he conseguido injectar codigo sql y entrar con alguna expresion que evaluada de como resultado algun valor verdadero,intentar entrar como algun usuario en concreto(like)...y otras cosas.

lo que me interesa saber es lo siguiente,se que con la funcion mysql_query solo puedo ejecutar una consulta, pero en los ejemplos que he visto en el codigo injectado ejecutan mas de una,¿como lograrlo,?pues lo he intentado y obtengo el warning:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\site\login.php on line 24

parte del codigo php es este:


$query="select * from login_users where user='$user' and passwd='$passwd'";
$result=mysql_query($query,$connection);
if(!mysql_num_rows($result))
{
echo"<p>Acceso denedago</p>";
}
else
{
echo"<p>Acceso concedido</p>";
}


al ejecutar mas de una consulta separadas por ';' dichas consultas no se ejecutan.¿como podria lograr ejecutar mas de una consulta?




VirajeCR

No me queda muy claro tu duda. Sería muy bueno que des a conocer cuales son las inyecciones que estás utilizando para darnos una idea de por donde va el problema. Por otro lado no se debe incluir ";" en las expresiones de SQL. Si no me equivoco esto se puede encontrar en la documentación de MySQL. Infiero que por hay pueda ir el problema.

Saludos.

Shell Root

En MySQL no se pueden hacer varias queries por consulta. En MSSQL, SÍ.

La query principal es
Código (sql) [Seleccionar]
select * from login_users where user='$user' and passwd='$passwd'

Como veo que no estas filtrando los valores de las variables, entonces se puede realizar un simple bypassing.
Código (sql) [Seleccionar]
select * from login_users where user=''[Aquí iSQL]--$user' and passwd='$passwd'
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

OzX

osea en realidad, si se puede generar una segunda consulta apartir de otra, pasa en las union sql injection


select * from noticias where id = 12 and+(select+user+from+mysql.user)=1
Si se fijan realmente se puede ejecutar 2 consultas.
el detalle esta en que tipo de funcion se pueda ejecutar, update,insert,etc, no puede ir predecedido de un select. es ahi el asunto. pero de que se puede generar 2 consultas como pregunta global, es un rotundi SI.