Agrietamiento por fuerza bruta de DVWA (con comparación de cuatro métodos de agrietamiento por fuerza bruta de BurpSuite)

Agrietamiento por fuerza bruta de DVWA

1. Agrietamiento por fuerza bruta de bajo nivel DVWA:


Brute Force Source
<?php

if( isset( $_GET[ 'Login' ] ) ) {
    
    
    // Get username
    $user = $_GET[ 'username' ];

    // Get password
    $pass = $_GET[ 'password' ];
    $pass = md5( $pass );

    // Check the database
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $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>' );

    if( $result && mysqli_num_rows( $result ) == 1 ) {
    
    
        // Get users details
        $row    = mysqli_fetch_assoc( $result );
        $avatar = $row["avatar"];

        // Login successful
        echo "<p>Welcome to the password protected area {
      
      $user}</p>";
        echo "<img src=\"{
      
      $avatar}\" />";
    }
    else {
    
    
        // Login failed
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

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

?>



parte central:

	$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";

Esta pieza no se ha procesado, por lo que puede utilizarContraseña universalDerivación

admin ‘ or ‘1’ = ‘1

Declaración después del empalme:

$query  = "SELECT * FROM `users` WHERE user = 'admin ‘ or ‘1’ = ‘1' AND password = '$pass';";

Tanto las comillas simples delanteras como traseras están cerradas, y la declaración o '1' = '1' se inserta para formar un juicio lógico con AND; cuándo o y y existen al mismo tiempo, y el juicio se realizará primero, y entonces o se ejecutará un juicio, y 1 = 1 siempre es cierto, por lo que se omitió con éxito.

Fuerza bruta normal

1. Realizar la captura de paquetes
Inserte la descripción de la imagen aquí2. Enviar al intruso y agregar variables
Inserte la descripción de la imagen aquí

Se sabe que el nombre de usuario es admin, por lo que solo necesita agregar la variable de contraseña para destruirla.
Inserte la descripción de la imagen aquí
3. Importe el diccionario para
Inserte la descripción de la imagen aquíiniciar el ataque y juzgue si el craqueo por fuerza bruta es exitoso o no a través de la diferencia de la longitud de retorno.
Inserte la descripción de la imagen aquí
Así que adivina la contraseña como contraseña.
Verifique e inicie sesión correctamente.
Inserte la descripción de la imagen aquí
**

Dos, agrietamiento de fuerza bruta de nivel medio DVWA:

**

Ver código fuente:


Brute Force Source
<?php

if( isset( $_GET[ 'Login' ] ) ) {
    
    
    // Sanitise username input
    $user = $_GET[ 'username' ];
    $user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitise password input
    $pass = $_GET[ 'password' ];
    $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $pass = md5( $pass );

    // Check the database
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $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>' );

    if( $result && mysqli_num_rows( $result ) == 1 ) {
    
    
        // Get users details
        $row    = mysqli_fetch_assoc( $result );
        $avatar = $row["avatar"];

        // Login successful
        echo "<p>Welcome to the password protected area {
      
      $user}</p>";
        echo "<img src=\"{
      
      $avatar}\" />";
    }
    else {
    
    
        // Login failed
        sleep( 2 );
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

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

?>



Encontrado usando mysqli_real_escape_stringfunción:

mysqli_real_escape_string() 函数转义在 SQL 语句中使用的字符串中的特殊字符。

Por lo tanto, la contraseña universal no se puede usar para omitir, pero parece que el byte ancho se puede usar para omitir.
El método de fuerza bruta es el mismo que el de nivel bajo.

Tres, una explicación simple de los cuatro métodos de fuerza bruta.

Francotirador:

Para los parámetros de datos, no importa cuántas cargas útiles se agreguen, la función del francotirador se limita a cuando el valor de la variable del primer parámetro atraviesa el diccionario, el segundo parámetro u otros parámetros están en el valor de la variable del parámetro original hasta la primera variable de parámetro El valor se recorre. Después del diccionario, se procederá secuencialmente. Al mismo tiempo, los valores de las variables de parámetro del diccionario que se han recorrido permanecen sin cambios y ya no cambian. Finalmente, todos los valores de las variables de parámetro se modifican en este manera de lograr el propósito de agrietamiento por fuerza bruta.

diccionario Variable uno Variable dos
un FALSO
segundo FALSO
C FALSO
re CIERTO
mi FALSO
F FALSO
gramo FALSO
h CIERTO

Si la variable dos está antes del parámetro d del diccionario, la voladura falla

Ariete
En el modo Ariete, no importa cuántas cargas útiles se agreguen, al recorrer el diccionario, el efecto final es que el valor de cada variable de parámetro es el mismo, es decir, el valor de todas las variables de parámetro de carga útil se toma en la primer intento Se toma el primero en el diccionario y el segundo en el segundo intento, y se recorre a su vez todo el diccionario.

diccionario Variable uno Variable dos
un FALSO FALSO
segundo FALSO FALSO
C FALSO FALSO
re CIERTO CIERTO
mi FALSO FALSO
F FALSO FALSO
gramo FALSO FALSO
h FALSO FALSO

Este método se utiliza cuando los parámetros reales de las variables son los mismos.

Barra transversal (horquilla)

Diccionario uno Variable uno Diccionario dos Variable dos
un FALSO 1 FALSO
segundo FALSO 2 FALSO
C FALSO 3 CIERTO
re CIERTO 4 FALSO
mi FALSO 5 FALSO
F Sin coincidencia
gramo Sin coincidencia
h Sin coincidencia

El efecto final del craqueo por fuerza bruta en Pitchfork es que cada carga útil necesita cargar el conjunto de carga útil. Al mismo tiempo, el proceso de craqueo por fuerza bruta es que el valor del parámetro variable de cada carga útil atraviesa el diccionario respectivo para coincidir, y todos comienzan del primero, es decir En este proceso, la coincidencia de nombre de usuario y contraseña es consistente con la disposición del diccionario cargado. Finalmente, la regla final es detenerse según cuál diccionario es el menor, es decir, según El menos.

Bomba de racimo (Bomba de racimo)

Diccionario uno Variable uno Diccionario dos Variable dos
un FALSO 1 FALSO
segundo FALSO 1 FALSO
C FALSO 1 FALSO
re FALSO 1 FALSO
un FALSO 2 FALSO
segundo FALSO 2 FALSO
C CIERTO 2 CIERTO
re FALSO 2 FALSO

En Clusterbomb, el resultado final es que ambas partes atraviesan todo el diccionario. El primer valor de parámetro del primer diccionario recorre todos los valores de parámetro del segundo diccionario hasta que estén todos completados, y luego el segundo valor de parámetro del primero diccionario recorre los segundos valores de todos los parámetros de un diccionario hasta completarlos todos. Finalmente, todos los valores de los parámetros del primer diccionario completan el recorrido del segundo diccionario, luego se termina.

Supongo que te gusta

Origin blog.csdn.net/qq_45742511/article/details/112910242
Recomendado
Clasificación