Ayuda sql injection

Iniciado por ifcaro, 4 Agosto 2006, 02:40 AM

0 Miembros y 2 Visitantes están viendo este tema.

ifcaro

Hola a todos

Llevo un tiempo intentando entrar en la zona de usuarios de una pagina. Mi objetivo seria poder hacerme usuario pero para ello necesito el numero de serie de un programa y no le tengo. El caso es q intente hacer sql injection para ver si podia entrar con el nombre de otro usuario o en el mejor de los casos crearme uno pero la pagina solo muestra:

ERROR:Internal error

Pero he descubierto en un sitio que poniendo un nombre cualquiera y despues ' al enviar la pagina responde:

Escribiendo:

usuario' cualquier cosa

Aparece:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/blitzbasic/domains/blitzbasic.com/public_html/Account/_forgotten_password.php on line 13
ERROR:Username not recognised.


No tengo mucha experiencia en esto pero creo que de ahi podria sacar algun modo de poder entrar a la zona de usuarios pa poder bajarme unas actualizaciones

pepeluxx

si pones como usuario ' te tomara un usuario en blanco y tienes dos opciones:

- que te de un error en el SQL al estar mal construido
- que te diga usuario invalido porque no hay usuarios en blanco

tal vez si pruebas a poner: ' or 'a'='a

ifcaro

El problema es que donde esta el fallo es en la pagina de "olvide mi contraseña" y lo que pide es el usuario y el email y funciona mas o menos asi:


_forgotten_password.php

if (usuario=="") {
die("NO USUARIO"); //Si el usuario esta en blanco error
}

if (email=="") {
die("NO EMAIL"); //Si el email esta en blanco error
}

if (usuario!=""){

//Consulta a la base de datos

If (email==email) { //Si el email es como el de la bd

mail() //Envia la contraseña o lo q haga
}
}

Lo que se me ocurrio fue intentar añadirme a la base de datos o engañarla para que me enviara la contraseña de otro usuario poniendo algo como


' insert into users values('usuario', 'password')

Pero no se si sera posible. esa es mi duda

pepeluxx

a ti no te va a mandar nunca la contraseña de otro usuario.

En caso de encontrar el usuario se le mandara a la direccion mail asociada su password. Eso pondra en aviso al usuario de que alguien intenta descubrir su password.

Otra cosa es que trates de provocar un error en el sql que te muestre por pantalla los errores. En ese caso podrias sacar la password de cualquier usuario.

Si el ataque es ciego, si no te muestra los resultados del error sino que simplemente te da un error en la construccion de la sentencia SQL, podrias intentar generar un INSERT para crearte un usuario, pero de que te sirve? supongo que habra un formulario de registro donde poderte crear un usuario tambien, a no ser que conozcas los campos de la tabla y te des privilegios de administrador, pero eso nos lleva al primer punto, tendrias que ver los errores provocados por la base de datos

Si se trata de un foro o algun programa que puedas descargar el codigo fuente de la web del autor, si que podrias ver exactamente cada tabla y sus campos.

ifcaro

Si hay un formulario para registrarse pero hay que escribir el numero de serie del programa. si tuviera pelas pa comprarmelo pues no habria problema pero no las tengo :(

Si supiera algo de sql... pero lo unico que se es lo tipico de

SELECT * from users WHERE user=='usuario'

y dudo mucho que sea asi. por eso no sabria que consulta hacer para que me diera un error con alguna informacion comprometida. e leido algunos textos pero me e kedao igual

pepeluxx

A ver .... sabes que es el sql-inject y sabes que el host es vulnerable .... pues la cosa esta clara, bajate un manual de sql y aprende a crear sentencias

Esto no es aplicar un programa que te de una password, sino aplicar la logica ante un fallo de programacion. Sabiendo que se puede explotar este tipo de fallos y habiendo tantos manuales buenos en internet con ejemplo de inyecciones .... te queda lo mas facil  ;D

Es que no se trata de meter una sentencia concreta sino de jugar con el sistema y segunlas respuestas que te de, ir probando cosas, pero es indispensable conocer el lenguaje SQL para ello

ifcaro

Aver eso ya lo se. pero yo en un principio lo que keria es saber si por ahi podria conseguir algo para seguir investigando o si por ahi no hay nada que hacer y buscar por otro lado

sirdarckcat

Cita de: pepeluxx en  6 Agosto 2006, 23:18 PM
a ti no te va a mandar nunca la contraseña de otro usuario.

En caso de encontrar el usuario se le mandara a la direccion mail asociada su password. Eso pondra en aviso al usuario de que alguien intenta descubrir su password.

Otra cosa es que trates de provocar un error en el sql que te muestre por pantalla los errores. En ese caso podrias sacar la password de cualquier usuario.

Si el ataque es ciego, si no te muestra los resultados del error sino que simplemente te da un error en la construccion de la sentencia SQL, podrias intentar generar un INSERT para crearte un usuario, pero de que te sirve? supongo que habra un formulario de registro donde poderte crear un usuario tambien, a no ser que conozcas los campos de la tabla y te des privilegios de administrador, pero eso nos lleva al primer punto, tendrias que ver los errores provocados por la base de datos

Si se trata de un foro o algun programa que puedas descargar el codigo fuente de la web del autor, si que podrias ver exactamente cada tabla y sus campos.
@pepelux: si se puede hacer que te envie el password de otro usuario.

@taskolokooo: dado que es mysql, lee esto:

http://www.reversing.org/node/view/13
http://www.governmentsecurity.org/archive/t8812.html
http://www.securiteam.com/securityreviews/5KP0N1PC1W.html

pepeluxx

tienes razon sdc, i'm sorry