Why is injection data not returned?

34 Views Asked by At

I am learning about SQLI vulnerabilities, created an application in Flask with different vulnerable fields. One of these fields are HTTP headers.

# Página para configurar una cabecera HTTP con un valor especificado por el usuario
@app.route('/set_header')
def set_header():
    header_name = request.args.get('header_name', '')
    header_value = request.args.get('header_value', '')
    # Configurar la cabecera HTTP con el valor proporcionado por el usuario
    response = make_response("Cabecera configurada<br>")
    response.headers[header_name] = header_value
    
    # Buscar usuarios en la base de datos utilizando el valor de la cabecera
    usuarios_encontrados = buscar_usuario_por_cabecera(header_value)
    
    # Construir la respuesta HTML con los resultados
    html = "<h1>Información de la tabla usuarios</h1>"
    if usuarios_encontrados:
        html += "<ul>"
        for usuario in usuarios_encontrados:
            html += f"<li>{usuario}</li>"
        html += "</ul>"
    else:
        html += "<p>No se encontró información en la tabla usuarios.</p>"
    
    # Adjuntar el HTML a la respuesta
    response.set_data(response.get_data(as_text=True) + html)
    
    return response


# Función para buscar usuarios en la base de datos utilizando el valor de la cabecera HTTP
def buscar_usuario_por_cabecera(valor_cabecera):
    # Conexión a la base de datos MySQL
    conexion = mysql.connector.connect(**db_config)
    cursor = conexion.cursor()
    
    # Construcción de la consulta SQL concatenando directamente los valores
    consulta = "SELECT * FROM usuarios WHERE nombre = '" + valor_cabecera + "'"
    
    # Ejecución de la consulta SQL
    cursor.execute(consulta)
    
    # Obtención de los resultados de la consulta
    resultado = cursor.fetchall()
    
    # Si se explota la vulnerabilidad, imprimir la información de la tabla
    print("Información de la tabla usuarios:", resultado)
    
    # Cierre de la conexión a la base de datos
    conexion.close()

    # Retorno de los resultados de la consulta
    return resultado

The code I am using to exploit the vulnerability is:

import requests

# URL del punto de acceso vulnerable
url = 'http://127.0.0.1:5000/set_header'

# Payload malicioso para la inyección SQL
payload = "' OR '1'='1"

# Cabecera HTTP con el valor malicioso
headers = {'X-User': payload}

# Realizar la solicitud GET con la cabecera maliciosa
response = requests.get(url, headers=headers)

# Imprimir la respuesta del servidor
print(response.text)

But the result is:

Cabecera configurada<br><h1>Información de la tabla usuarios</h1><p>No se encontró información en la tabla usuarios.</p>

Apparently everything is correct, I think the error is in the exploit. How can I get it?

0

There are 0 best solutions below