# Low

Di bawah ini adalah *source-code* dari form login level low di DVWA.

```php
vulnerabilities/brute/source/low.php
<?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);
}
​
?>
```

## Mencari Informasi <a href="#mencari-informasi" id="mencari-informasi"></a>

Perhatikan bahwa form ini menggunakan method `GET`, sehingga data akan dikirim melalui URL. Contohnya, ketika saya mengisi nilai username menjadi *"admin"* dan password *"123456"*, maka data tersebut akan terlihat di URL-nya:

```
http://172.17.0.2/vulnerabilities/brute/?username=admin&password=12345&Login=Login#
```

Untuk mengetahui lebih lanjut tenang method `GET` ini, anda bisa membaca [artikel CodeSaya](https://codesaya.com/a/method-post-dan-get-pada-form-gnmjgzbsdt/).

Dan jika inputan salah akan muncul pesan seperti pada baris ke-26, yaitu muncul pesan seperti berikut:

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzLA_a9XPm27LtPnBVu%2F-LzLDzQltbirYKPItXxJ%2FDeepinScreenshot_select-area_20200124132720.png?alt=media\&token=7abba448-5047-44f3-8e99-ad65e337d966)

Selain itu kita bisa melihat *cookie*-nya terlebih dahulu menggunakan Burpsuite (atau menggunakan *inspect element* pada browser).

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzLA_a9XPm27LtPnBVu%2F-LzLGmkddKi5RvNaoUeJ%2FDeepinScreenshot_select-area_20200124133814.png?alt=media\&token=41f4b821-cc64-4826-bb99-632910a1d2a9)

Terlihat bahwa terdapat *cookie* `PHPSESSID` dan `security` yang digunakan untuk mengatur web itu sendiri. *Cookie* ini akan kita gunakan untuk melakukan brute force.

Jika kita mengamati *source-code*-nya lagi, terlihat bahwa tidak adanya Anti-CSRF token, limit maupun CAPTCHA. Dengan demikian kita bisa dengan mudah melakukan brute force.

## Melakukan Serangan <a href="#melakukan-serangan" id="melakukan-serangan"></a>

Pertama, siapkan wordlist yang akan kita gunakan. Saya telah membuat wordlist sendiri, seperti berikut:<br>

{% file src="/files/Xean8sOV1WTVm7MMahzP" %}

{% file src="/files/LIUY0p0XDB8LQmvKU6z1" %}
DVWA Wordlist
{% endfile %}

Kedua, buka terminal dan jalankan *tool* Hydra seperti berikut:

```bash
hydra 172.17.0.2 -l admin -P DVWA-Wordlist.txt http-get-form "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect.:H=Cookie:PHPSESSID=77jr5376ldag1qc392brdr2b11; security=low"
```

Penjelasan:

* `172.17.0.2` adalah IP target yang kita tuju (bisa juga menggunakan domain).
* `-l admin`, di sini saya mengasumsikan bahwa kita tahu username dari target adalah *"admin"* (bukan yang lain).
* `-P DVWA-Wordlist.txt` berfungsi untuk menentukan file wordlist untuk password yang akan dicoba satu per satu.
* `http-get-form` berfungsi untuk menentukan method yang digunakan pada form adalah `GET`.
* `username=^USER^&password=^PASS^` nilai tersebut akan diisi dari username (`-l`) dan password (`-P`) yang telah kita tentukan sebelumnya.
* `F=Username and/or password incorrect.` digunakan untuk membandingkan hasil brute force. Jika menghasilkan teks tersebut berarti password tidak valid.
* `H=Cookie:` digunakan untuk mengatur *cookie* yang digunakan ketika mengakses web tersebut.

Hasil dari perintah di atas adalah seperti berikut:

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzLA_a9XPm27LtPnBVu%2F-LzLNdvsZvWSsGbKEBs2%2FDeepinScreenshot_select-area_20200124140931.png?alt=media\&token=7f0f2906-29af-4a09-b796-84f8c0fd3d9a)

Terlihat bahwa kata *"password"* adalah password yang valid.

Jika kita coba pada web, maka akan tampil seperti berikut:

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzLA_a9XPm27LtPnBVu%2F-LzLO1imH2a0WPyxCQIM%2FDeepinScreenshot_select-area_20200124141118.png?alt=media\&token=20a12958-76e3-4f50-a811-f2a166946741)

Yups! Selamat! Kita berhasil melakukan brute force pada level low, sekarang kita lanjut ke level medium.😁<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.anggipradana.com/tutorial/dvwa/brute-force/low.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
