Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: Gorky en 5 Noviembre 2009, 22:58 pm



Título: Insertar datos con inyeccion sql
Publicado por: Gorky en 5 Noviembre 2009, 22:58 pm
Buenas foreros. Ando investigando sobre la inyeccion sql. Imaginad que tengo la siguiente url:
http://localhost/archivo.php?id=7 (http://localhost/archivo.php?id=7)
Y resulta que es vulnerable. De que forma podria aprovechar esa vulnerabilidad para insertar datos en las tablas? He estado viendo que en Oracle seria asi:
http://localhost/archivo.php?id=7; insert into .... (http://localhost/archivo.php?id=7; insert into ....)
Sin embargo yo estoy usando mysql. Alguien me puede echar una mano?


Título: Re: Insertar datos con inyeccion sql
Publicado por: :ohk<any> en 5 Noviembre 2009, 23:10 pm
Como ya dijeron antes, en mysql no puedes usar 2 sentencias al mismo tiempo, un SELECT no va con un INSERT, en oracle todo lo contrario.


Título: Re: Insertar datos con inyeccion sql
Publicado por: Gorky en 5 Noviembre 2009, 23:12 pm
Entonces no existe forma de poder insertar datos con una url vulnerable?


Título: Re: Insertar datos con inyeccion sql
Publicado por: WHK en 5 Noviembre 2009, 23:19 pm
Depende como esté hecha la query, si por ejemplo en alguna parte se utilizan estadisticas locales entonces esa petición GET se irá a la base de datos con algún update o insert, en ese casi si podrías inyectar pero cuando es desde un select a un update entonces no se puede.

http://foro.elhacker.net/nivel_web/inyeccion_sql_mysql_update_dentro_de_un_select-t241813.0.html

Ahora, puede que ese sitio web utilize librerías preconstruidas donde si acepte el carácter ";" como separador de querys, en ese caso si podrías hacer un update concatenando ambas querys con ";" pero por defecto no se puede. Lo que hacen la mayoria de las clases prefabricadas es separar todo el string en un solo array dimensional separados por el ";" y luego comienza a procesar query por query.


Título: Re: Insertar datos con inyeccion sql
Publicado por: OzX en 7 Noviembre 2009, 00:54 am
hi brotas
lo que intentas hacer se llamada "stacked querys"

En mysql no se puede hacer una consulta independiente a la original, en SQL como lenguaje se ocupa el ; para generar una nueva consulta a ello se llama "Stacked Querys", pero hay distintas  restricciones para distintas base de datos, en la imagens e muestran las combinaciones.

IMG sacada de los Papper de la Blackhat
(http://www.ubuntu-pics.de/bild/20593/screenshot_191_lbJN7j.png)

Y sobre
http://foro.elhacker.net/nivel_web/inyeccion_sql_mysql_update_dentro_de_un_select-t241813.0.html
La respuesta definitiva es que en Mysql con php no se puede.

Saludos¡