Merhaba yine bir SQL konusu. @x4807 konu hakkýnda bilgi verdiði için kendisine teþekkür ederim :)) . Baþtan diyeyim konunun devamý olacaktýr.

Nedir Bu Kör Enjeksiyon
Blind injection olarak da geçer. Eðer ki hedef sistemde unýon select iþlemleri sonuç vermez ise blind injection denemeleri yapýlabilir. Bu yöntemde Binary Search kullanýlabiliyor. Yani belli bir deðere ulaþýlmaya çalýþýlýyor. Örneðin veri tabanýnda ki 85. id ye ulaþmak için veri tabanýna 50 den büyük olduðunu sorgulatýrýz. Daha sonra 100 den azaltarak veya 50 den arttýrarak 85 deðerini elde etmeye çalýþýrýz bu bu þekilde devam eder. Mantýk olarak böyle. Kör enjeksiyon'un normal SQL Enjeksiyonundan farký nedir dersek. Burda gelen cevaplar bazen sonuç vermeyebiliyor. Nasýl olduðunu DVWA üzerinden anlatacaðým. Bu yüzden kör enjeksiyon deniliyor aslýnda.

Kör Enjeksiyonlar Nerelerde Rastlanabilir
Ýnputlara dayalý bir enjeksiyon mantýðý olduðu için inputlar dan oluþan yerlerde rastlanabilir. Daha çok Post isteklerinde rastlanýyor. Neler olabilir derseniz örneðin þifre deðiþtirme , kullanýcý bilgisi edinme , bir film aratma vs. gibi . Aslýnda sistemin bizden bir veri isteyip bu veri karþýlýðýnda bilgiler çýkarýlan yerlerde rastlanabiliyor.

Kör Enjeksiyon Kullanýlarak Ne Elde Edilebilir?
Eðer bir site de kör enjeksiyon olmasý durumunda hedef sistem üzerinden gelen post istekleri üzerine oynamalar yapýlabilir. Bu da nelere sebebiyet veriyor derseniz DVWA üzerinden blind injection'u anlatacaðým. Ama genel olarak baktýðýmýzda gelen geçen true - false deðerleri kontrol altýna alýnabiliyor. Bir true veya false deðerinin deðiþtirilmesi hedef sistemin kandýrýlmasý olarak. Bunlar gerçekleþtirilince enjeksiyonun sömürülmüþ olmasý durumu söz konusudur.

DVWA Üzerinden Blind Ýnjection Tespiti Yapmak
Þimdi öncelikle DVWA kurmamýz gerekmekte. Kurulup açtýktan sonra security'i önce low alalým medium da da nasýl bypass edildiðini göstereceðim. Önce normal SQL Ýnjection a giriþ yapalým. Ve tek týrnak yani ' býrakalým. Bunu yapýnca ne yapacak örneðin bir username e tek týrnak girince ki sql sorgusu;
Kod:
SELECT * FROM users WHERE username='''
Þeklinde olacaktýr. Hani SQL de gelen giden sorgularý iki tane tek týrnaklar içine alýyordu bizde bundan yararlanarak sistemi bypass ediyorduk yani hackliyorduk. Bu sorgu yapýldýðýnda üç tane tek týrnak durumunda bize SQL Syntax hatasý verecektir. Ayný þekilde DVWA'da blind injection da tek týrnak girersek hata vermediðini göreceðiz.
NOT: SQL Enjeksiyon tespiti sýrasýnda kullanýlan tek týrnak gibi þeyler esnasýnda sistemin bize bir sonuç vermemesi sistemde bir enjeksiyon olmadýðý manasýna gelmez. Sistemde Kör enjeksiyon olabilir.
Hem normal SQL Enjeksiyonunda hem de Kör de bunu yapýp resimler halinde vereyim.



# Fark ederseniz ilkinde sql sytax verdi #
# Diðerinde ise böyle bir id database de kayýtlý deðil dedi #
Genel olarak farký bu aslýnda. Bazen hiç sonuç bile vermeyebilir tek týrnak koyunca. Ayný sayfayý verebilir size iþte orda kör enjeksiyon olabilir olmayadabilir. Peki olup olmadýðýný nasýl test ederiz? Bir takým istekler atýlmalýdýr databse'e . Eðer sonuç verir ise bunun tespiti saðlanabilir. Yapalým tespitini.

# Öncelikle hedef sistemi tanýyalým. Hedef sistemimizde bir numara giriyoruz ve o numaraya ait bilgiyi bize veriyor #
# Bu sonuçlar iki tane first name ve last name #
# 1 girdiðimizde admin bilgisini veriyor #
Þimdi bu bilgileri öðrendik. Hedef sistem üzerinde þu tarz kodlar çalýþtýrabiliriz;
Kod:
1' union select 1,table_name from information_schema.tables#
Kod:
1' union select database(),user()#

# Ýlk kodumuzda birinci yani admin kullanýcýsýný seçip hedef sistemi bypass etmek için kandýrmak için tek týrnak koyuyoruz. Daha sonra kendimiz bir sorgu bir select yaratmak için union select kullanýyoruz. Ve geriye kalan kodlar ile de bilgileri alýyoruz #
# Ýkinci kodda ise ayný þekilde. database() ve user() koyarak bilgileri alýyoruz. Ýki tane istek koyduk database ve user olarak sebebi karþýmýza iki veri çýkartmasý. Sistemin bu özelliðini kullandýk #
Bunlarý çalýþtýrdýðýmýzda aslýnda bypass etmiþ oluyoruz sistemi. Benim bir önceki SQL Enjeksiyonunu Anlamak konusuyla ayný mantýk ama tek farký bize enjeksiyon yok gibi gösterebiliyor. Bu kodlarý resimler halinde çalýþtýrýp atayým.
NOT: Benim sistemimde bir bozukluk olduðu için testi SQL Ýnjection da yapacaðým siz Blind de yapabilirsiniz.


Ýlk resimde bir sürü tablo bilgisi. Ýkinci resimde ise database ismini öðrendik. Bu bilgiler ile SQL bilen adam database içinde gezinir bilgileri alýr bu sayede. Peki biraz daha yüksel level da nasýl oluyor.

Medium'da Bypass Etmek
Not: Öncelikle # iþareti ne anlama geliyor derseniz # den sonraki komutlar çalýþtýrýlmýyor SQL de. Ama þöyle bir þey varki örneðin username e admin# girdiniz. Giden sorgu 'admin#' olacaðý için burda iþe yaramayacaktýr sistem bunu user olarak algýlar. Siz gidip admin'# yaparsanýz bu sefer sql de bu 'admin'#' þeklinde olacaðý için bypass edilecektir.
Þimdi medium da bir admin loginin de þu tarz bypass komutlarý denenebilir.
Kod:
'OR 20=20#
( Burda neden 20=20 verdik. 1=1 yapýlyor genelde de burdaki mantýk 20 20 ye eþit mi eþit o zaman true veriyor bize SQL de o þekilde. Web sitesini kodlayan adam php kodlarý if else ler ile 1=1 karakterlerine izin vermemiþ olabilir ama 20=20 olabilir )
Veya..
Kod:
'AND 20=20#
( Her zaman OR kullanýlmak zorunda deðilsiniz. AND'de var. Ezbere iþ yapmamak gerek )
Veya..
Kod:
'+OR+20=20#
( Burdaki + lar ne derseniz. Boþluklarýn yeri + lar ile doldurulabilir. Bunu order by de url de order+by+.....--+- olarak da kullanýrken görüyoruz )
Veya..
Kod:
'+OR+20=20%23
( %23 # temsil ediyor. Tek týrnaðý ise de %27 temsil ediyor. Bunlarý url de deniyerek görebilirsiniz. Örneðin url ye tek týrnak koyup enter basýnca %27 gelecektir. )
Konunun devamýnda Burp Suite ile gelen giden true false deðerleri üzerinde oynamayý göstereceðim. Blind mantýðý normal sql ile ayný tek farký bazen cevaplar arka planda çalýþabilir. Bizde bunu göremediðimiz için enjeksiyon yok sanarýz. Konum bu kadardý iyi forumlar dilerim :))

Nedir Bu Kör Enjeksiyon
Blind injection olarak da geçer. Eðer ki hedef sistemde unýon select iþlemleri sonuç vermez ise blind injection denemeleri yapýlabilir. Bu yöntemde Binary Search kullanýlabiliyor. Yani belli bir deðere ulaþýlmaya çalýþýlýyor. Örneðin veri tabanýnda ki 85. id ye ulaþmak için veri tabanýna 50 den büyük olduðunu sorgulatýrýz. Daha sonra 100 den azaltarak veya 50 den arttýrarak 85 deðerini elde etmeye çalýþýrýz bu bu þekilde devam eder. Mantýk olarak böyle. Kör enjeksiyon'un normal SQL Enjeksiyonundan farký nedir dersek. Burda gelen cevaplar bazen sonuç vermeyebiliyor. Nasýl olduðunu DVWA üzerinden anlatacaðým. Bu yüzden kör enjeksiyon deniliyor aslýnda.

Kör Enjeksiyonlar Nerelerde Rastlanabilir
Ýnputlara dayalý bir enjeksiyon mantýðý olduðu için inputlar dan oluþan yerlerde rastlanabilir. Daha çok Post isteklerinde rastlanýyor. Neler olabilir derseniz örneðin þifre deðiþtirme , kullanýcý bilgisi edinme , bir film aratma vs. gibi . Aslýnda sistemin bizden bir veri isteyip bu veri karþýlýðýnda bilgiler çýkarýlan yerlerde rastlanabiliyor.

Kör Enjeksiyon Kullanýlarak Ne Elde Edilebilir?
Eðer bir site de kör enjeksiyon olmasý durumunda hedef sistem üzerinden gelen post istekleri üzerine oynamalar yapýlabilir. Bu da nelere sebebiyet veriyor derseniz DVWA üzerinden blind injection'u anlatacaðým. Ama genel olarak baktýðýmýzda gelen geçen true - false deðerleri kontrol altýna alýnabiliyor. Bir true veya false deðerinin deðiþtirilmesi hedef sistemin kandýrýlmasý olarak. Bunlar gerçekleþtirilince enjeksiyonun sömürülmüþ olmasý durumu söz konusudur.

DVWA Üzerinden Blind Ýnjection Tespiti Yapmak
Þimdi öncelikle DVWA kurmamýz gerekmekte. Kurulup açtýktan sonra security'i önce low alalým medium da da nasýl bypass edildiðini göstereceðim. Önce normal SQL Ýnjection a giriþ yapalým. Ve tek týrnak yani ' býrakalým. Bunu yapýnca ne yapacak örneðin bir username e tek týrnak girince ki sql sorgusu;
Kod:
SELECT * FROM users WHERE username='''
Þeklinde olacaktýr. Hani SQL de gelen giden sorgularý iki tane tek týrnaklar içine alýyordu bizde bundan yararlanarak sistemi bypass ediyorduk yani hackliyorduk. Bu sorgu yapýldýðýnda üç tane tek týrnak durumunda bize SQL Syntax hatasý verecektir. Ayný þekilde DVWA'da blind injection da tek týrnak girersek hata vermediðini göreceðiz.
NOT: SQL Enjeksiyon tespiti sýrasýnda kullanýlan tek týrnak gibi þeyler esnasýnda sistemin bize bir sonuç vermemesi sistemde bir enjeksiyon olmadýðý manasýna gelmez. Sistemde Kör enjeksiyon olabilir.
Hem normal SQL Enjeksiyonunda hem de Kör de bunu yapýp resimler halinde vereyim.



# Fark ederseniz ilkinde sql sytax verdi #
# Diðerinde ise böyle bir id database de kayýtlý deðil dedi #
Genel olarak farký bu aslýnda. Bazen hiç sonuç bile vermeyebilir tek týrnak koyunca. Ayný sayfayý verebilir size iþte orda kör enjeksiyon olabilir olmayadabilir. Peki olup olmadýðýný nasýl test ederiz? Bir takým istekler atýlmalýdýr databse'e . Eðer sonuç verir ise bunun tespiti saðlanabilir. Yapalým tespitini.

# Öncelikle hedef sistemi tanýyalým. Hedef sistemimizde bir numara giriyoruz ve o numaraya ait bilgiyi bize veriyor #
# Bu sonuçlar iki tane first name ve last name #
# 1 girdiðimizde admin bilgisini veriyor #
Þimdi bu bilgileri öðrendik. Hedef sistem üzerinde þu tarz kodlar çalýþtýrabiliriz;
Kod:
1' union select 1,table_name from information_schema.tables#
Kod:
1' union select database(),user()#

# Ýlk kodumuzda birinci yani admin kullanýcýsýný seçip hedef sistemi bypass etmek için kandýrmak için tek týrnak koyuyoruz. Daha sonra kendimiz bir sorgu bir select yaratmak için union select kullanýyoruz. Ve geriye kalan kodlar ile de bilgileri alýyoruz #
# Ýkinci kodda ise ayný þekilde. database() ve user() koyarak bilgileri alýyoruz. Ýki tane istek koyduk database ve user olarak sebebi karþýmýza iki veri çýkartmasý. Sistemin bu özelliðini kullandýk #
Bunlarý çalýþtýrdýðýmýzda aslýnda bypass etmiþ oluyoruz sistemi. Benim bir önceki SQL Enjeksiyonunu Anlamak konusuyla ayný mantýk ama tek farký bize enjeksiyon yok gibi gösterebiliyor. Bu kodlarý resimler halinde çalýþtýrýp atayým.
NOT: Benim sistemimde bir bozukluk olduðu için testi SQL Ýnjection da yapacaðým siz Blind de yapabilirsiniz.


Ýlk resimde bir sürü tablo bilgisi. Ýkinci resimde ise database ismini öðrendik. Bu bilgiler ile SQL bilen adam database içinde gezinir bilgileri alýr bu sayede. Peki biraz daha yüksel level da nasýl oluyor.

Medium'da Bypass Etmek
Not: Öncelikle # iþareti ne anlama geliyor derseniz # den sonraki komutlar çalýþtýrýlmýyor SQL de. Ama þöyle bir þey varki örneðin username e admin# girdiniz. Giden sorgu 'admin#' olacaðý için burda iþe yaramayacaktýr sistem bunu user olarak algýlar. Siz gidip admin'# yaparsanýz bu sefer sql de bu 'admin'#' þeklinde olacaðý için bypass edilecektir.
Þimdi medium da bir admin loginin de þu tarz bypass komutlarý denenebilir.
Kod:
'OR 20=20#
( Burda neden 20=20 verdik. 1=1 yapýlyor genelde de burdaki mantýk 20 20 ye eþit mi eþit o zaman true veriyor bize SQL de o þekilde. Web sitesini kodlayan adam php kodlarý if else ler ile 1=1 karakterlerine izin vermemiþ olabilir ama 20=20 olabilir )
Veya..
Kod:
'AND 20=20#
( Her zaman OR kullanýlmak zorunda deðilsiniz. AND'de var. Ezbere iþ yapmamak gerek )
Veya..
Kod:
'+OR+20=20#
( Burdaki + lar ne derseniz. Boþluklarýn yeri + lar ile doldurulabilir. Bunu order by de url de order+by+.....--+- olarak da kullanýrken görüyoruz )
Veya..
Kod:
'+OR+20=20%23
( %23 # temsil ediyor. Tek týrnaðý ise de %27 temsil ediyor. Bunlarý url de deniyerek görebilirsiniz. Örneðin url ye tek týrnak koyup enter basýnca %27 gelecektir. )
Konunun devamýnda Burp Suite ile gelen giden true false deðerleri üzerinde oynamayý göstereceðim. Blind mantýðý normal sql ile ayný tek farký bazen cevaplar arka planda çalýþabilir. Bizde bunu göremediðimiz için enjeksiyon yok sanarýz. Konum bu kadardý iyi forumlar dilerim :))