Necesto realizar blind sql a una web a través de inputs de un formulario html

Iniciado por ukraniano, 15 Enero 2013, 00:20 AM

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

ukraniano

Mi web objetivo sé que es vulnerable. He hecho inyecciones a través de formularios html y gracias a ello conozco una de sus tablas y el nombre de las variables que alberga. Pero es ir a ciegas probando. El sql no muestra las consultas en pantalla por lo que es imposible averiguar gran cosa. Hay alguna otra manera de descifrar todas las tablas más sencilla?
Me suena que esto es blind sql pero no sé si acierto.

Esta fue mi primera inyección importante tras estudiar en mi fp php y sql y la verdad es que uno se siente motivado jaja.

Un saludo!

it3r

dicex que ya conoces una de sus tablas y las "variables" que alberga, supongo que con variables te refieres a los campos de la tabla.

"El sql no muestra las consultas en pantalla", esto no se entiende, en programación en php uno no anda mostrando las consultas sql xD, y si te refieres a los errores que se generan por lo general solo muestran una parte de la consulta y no toda.

Lo mejor que personalmente creo que puedas hacer es, programar en php una simple web vulnerable a sql injection e ir practicando en local, aprender sobre los métodos POST y GET, aprender sobre mysql, por ejemplo mysql guarda los nombres de la tablas y las columnas en db especifica.

Y antes de atacar una web objetivo te invito a que intentes programar una página parecida a tu objetivo, quizás así entiendas todo el trabajo que conlleva crear algo y pienses en reportar al contrario de atacar.

Esto es solo una opinion personal cada uno es libre de hacer lo que quiera :)

saludos

ukraniano

Es una web sencillita, no pienso borrar bases de datos ni hacer maldades, tengo curiosidad para saber dónde puedo llegar con mis conocimientos.

Sí, con variables me refería a los campos de la tabla.
Lo de las consultas en pantalla me refiero a que en inyecciones sql donde no se omiten errores salen por pantalla los resultados de las consultas. Aquí si la consulta está bien hecha y no tiene error de sintaxis solo obtengo un "error de usuario/contraseña" pero en cambio si fallo en el nombre de una tabla da error y dice que esa tabla no existe por lo que por prueba y error puedo deducir el nombre de algunas tablas.

Lo de hacer nombredelaweb.com/entrar.php?usuario='; no funciona, solo puedo pasar la inyección a través de los campos input del html.

it3r

hola,

La info del formulario se esta pasando por POST, entonces puedes usar un proxy para reenviar los datos y no tengas que escribir de nuevo el formulario y esas cosas, el proxy te lo puedes hacer tu mismo a travez de curl e indicando las inyecciones o puedes usar al alguna herramienta que repita trafico.

En cuanto a la inyección, si no te devuelve datos es quizás porque el lugar donde estas haciendo la inyección no retorna datos, es decir si te pones a pensar en php cuando uno hace un login, no retorna datos, al contrario de por ejemplo poner el id de una noticia para que se genere un html con la noticia.(lo digo porque supongo que estas usando algo como union all select)

Puedes intentar buscar otro parametro el cual devuelva datos o puedes intentar como dices explotarlo mediante blind sqli, y esta técnica es un poco lenta ya que en si se basa en averiguar caracter por caracter, preguntando si el caracter es a,b,c etc algo como, si el hex del primer caracter del nombre de la tabla 'users' es igual a hex de 'u' entonces dara verdadero y te mostrara el cartel de "error de usuario/contraseña", en caso contrario te saldrá un error.
Con eso puedes programarte mediante curl una aplicación que lo haga automaticamente.

Saludos.

ukraniano

Lo conseguí!

Gracias por la idea de utilizar un proxy. He filtrado todos los post utilizando paros proxy para tener una url en la que inyectar y luego he utilizado backtrack 5, que tiene la herramienta sqlmap y que se ha encargado de hacer el trabajo sucio.
Es muy potente y eficiente.