Bagi sebagian orang mungkin sudah mengenal information schema, sebuah database yang ada pada MySQL. Sementara, sebagian orang lain seperti saya, ga tau apa itu information schema, dan apa kegunaannya untuk kita?. SQL Injection, meski teknik ini sudah lama ada, namun sampai saat ini masih banyak ditemukan celah melalui SQL injection. SQLMap salah satu tool yang populer untuk menjalankan SQL injection, mempermudah orang untuk melakukannya. Akan tetapi, menggunakan tool seperti ini, terkadang membuat orang malas untuk mengetahui, bagaimana SQL injection bekerja?. Maka dari itu, di artikel kali ini akan membahas tentang SQL Injection, terutama pada bagian Information Schema.
Sebelum melanjutkan, dapat membaca referensi dibawah ini:
Dari referensi diatas, terdapat cheatsheet SQL injection yang sering digunakan untuk MySQL.
SELECT schema_name FROM information_schema.schemata;
SELECT table_schema, table_name, column_name FROM
information_schema.columns WHERE table_schema != ‘mysql’ AND
table_schema != ‘information_schema’
SELECT table_schema,table_name FROM information_schema.tables WHERE
table_schema != ‘mysql’ AND table_schema != ‘information_schema’
Dari beberapa query diatas, information_schema digunakan untuk melihat nama colum, nama database, dan nama table. Lalu apa sebenarnya isi dari information_schema?
INFORMATION_SCHEMA
is a database within each MySQL instance, the place that stores information about all the other databases that the MySQL server maintains. TheINFORMATION_SCHEMA
database contains several read-only tables. They are actually views, not base tables, so there are no files associated with them, and you cannot set triggers on them. Also, there is no database directory with that name.INFORMATION_SCHEMA
provides access to database metadata, information about the MySQL server such as the name of a database or table, the data type of a column, or access privileges. Other terms that are sometimes used for this information are data dictionary and system catalog. web resmi MySQL
Sudah cukup jelas dari penjelasan web resmi MySQL bahwa database information_schema berisi tentang database yang ada/telah dibuat di dalam MySQL, termasuk nama table dan field. Itulah mengapa disetiap cheatsheet yang ada di internet pasti menggunakan information_schema untuk mendapatkan informasi table dan field.
Mendapatkan semua nama database
Field schema_name pada table schemata berisi nama database yang ada di dalam MySQL, baik yang dibuat sendiri maupun yang sudah ada secara default, seperti information_schema, dst. Jika dibandingkan, query diatas sama seperti 'show databases;' pada MySQL.
Mendapatkan table dan field
SELECT table_schema, table_name, column_name FROM
information_schema.columns;
SELECT table_schema,table_name FROM information_schema.tables;
SELECT table_schema,table_name FROM information_schema.tables;
Ada 2 cara untuk mendapatkan nama table, dapat melalui table information_schema.tables, atau information_schema.columns. Perbedaannya adalah pada table information_schema.tables tidak terdapat nama column dari table yang ada. Sehingga penggunaannya disesuaikan dengan kebutuhan.
information_schema.tables |
information_schema.columns |
Query diatas berhasil menampilkan nama database, table, dan field, untuk mendapatkan hasil yang optimal, ditambahkan where clause untuk menyaring informasi yang diinginkan.
No comments:
Post a Comment