SQL Injection - Mengenal Perintah Dalam MYSQL
Serangan SQL Injection terdiri dari penyisipan atau "injeksi" dari permintaan SQL melalui input data dari user ke aplikasi. Eksploit SQL Injection yang berhasil dapat membaca data sensitif dari database, memodifikasi data database (Insert/ Update/ Delete), jalankan operasi administrasi pada database(seperti menonaktifkan DBMS), memulihkan konten dari file yang diberikan saat ini pada file DBMS sistem dan dalam beberapa kasus mengeluarkan command ke sistem operasi. Serangan SQL Injection adalah jenis serangan injeksi, di mana perintah SQL disuntikkan ke input data-plane untuk mempengaruhi pelaksanaan perintah SQL yang telah ditetapkan. _OWASP
Pada posting ini, saya akan memperkenalkan perintah sql yang digunakan pada serangan SQLi
Saya menggunakan contoh database seperti di bawah ini:
user_id | first_name | last_name | user | password | avatar | last_login | failed_login |
+———+————+———–+———+———————————-+—————————————————-+———————+————–+
| 1 | admin | admin | admin | 5f4dcc3b5aa765d61d8327deb882cf99 | http://192.168.1.5/DVWA/hackable/users/admin.jpg | 2017-09-01 11:40:16 | 0 |
| 2 | Gordon | Brown | gordonb | e99a18c428cb38d5f260853678922e03 | http://192.168.1.5/DVWA/hackable/users/gordonb.jpg | 2017-09-01 11:40:16 | 0 |
| 3 | Hack | Me | 1337 | 8d3533d75ae2c3966d7e0d4fcc69216b | http://192.168.1.5/DVWA/hackable/users/1337.jpg | 2017-09-01 11:40:16 | 0 |
| 4 | Pablo | Picasso | pablo | 0d107d09f5bbe40cade3de5c71e9e9b7 | http://192.168.1.5/DVWA/hackable/users/pablo.jpg | 2017-09-01 11:40:16 | 0 |
| 5 | Bob | Smith | smithy | 5f4dcc3b5aa765d61d8327deb882cf99 | http://192.168.1.5/DVWA/hackable/users/smithy.jpg | 2017-09-01 11:40:16 | 0 |
SQL Mid() Function
- SELECT MID(column_name,start,length) AS some_name FROM table_name;
The Limit() Function
SQL SELECT LIMIT digunakan untuk mengambil data dari satu tabel atau lebih dalam database dan membatasi jumlah data yang dikembalikan berdasarkan nilai batas.
- SELECT expressions FROM tables [WHERE conditions] [ORDER BY expression [ ASC | DESC ]] LIMIT number_rows [ OFFSET offset_value ];
Menggunakan fungsi limit() untuk mendapatkan table_name:
select table_name from information_schema.tables where table_schema=database() limit 0,1;
Mendapatkan karakter pertama di table_name:
select substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1) m;
MYSQL Concat() Function
Fungsi CONCAT () menggabungkan dua ekspresi atau lebih secara bersamaan.
- CONCAT(expression1, expression2, expression3,…)
MYSQL CONCAT_WS() Function
Fungsi CONCAT_WS () menyatukan dua atau lebih ekspresi bersama dan menambahkan pemisah di antara mereka.
- CONCAT_WS(separator, expression1, expression2, expression3,…)
MYSQL GROUP_CONCAT() Function
Fungsi MySQL GROUP_CONCAT menggabungkan string dari grup menjadi string tunggal dengan berbagai opsi
MYSQL COUNT() Function
Fungsi COUNT () mengembalikan jumlah catatan/data dalam query pemilihan
- COUNT (expression);
MYSQL RAND() Function
Fungsi RAND () mengembalikan angka acak atau angka acak dalam suatu rentang.
Fungsi RAND () akan mengembalikan nilai antara 0 (inklusif) dan 1 (eksklusif).
Fungsi RAND () akan mengembalikan angka yang benar-benar acak jika tidak ada seed yang disediakan, dan urutan nomor acak yang diulang jika nilai seed digunakan.
- RAND (seed)
MYSQL FLOOR() Function
Fungsi FLOOR () mengembalikan nilai integer terbesar yang kurang dari atau sama dengan angka.
- FLOOR (number);
Menggunakan Floor Untuk Mendapatkan Database :
- select count(*),(concat(0x3a,database(),0x3a,floor(rand()*2))) first_name from information_schema.tables group by first_name;
Menggunakan Floor Untuk Mendapatkan Nama Table :
- select count(*),concat(0x3a,0x3a,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x3a,floor(rand()*2)) name from information_schema.tables group by name;
Menggunakan Floor Untuk Mendapatkan Kontent :
- select count(*),concat(0x3a,0x3a,(select first_name from users limit 1,1),0x3a,floor(rand()*2)) name from information_schema.tables group by name;
SQL GROUP BY Statement
Pernyataan GROUP BY sering digunakan dengan fungsi agregat (COUNT, MAX, MIN, SUM, AVG) untuk mengelompokkan hasil-set dengan satu atau beberapa kolom.