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

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

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.

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:

Sehingga query yang server jalankan adalah seperti berikut:

Mudah dimengerti bukan?😊

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

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:

Tetap semangat! Happy Hacking! 🍻

Last updated