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

  • GROUP_CONCAT(DISTINCT expression ORDER BY expression SEPARATOR sep);

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.
  • SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);


MYSQL SUBSTR() Function

Fungsi SUBSTR () mengekstraksi substring dari string (mulai dari posisi mana pun).

  • SUBSTR(string, start, length)
  • or
  • SUBSTR(string FROM start FOR length)