yo yo nasılsınız dostlar!
Sıfırdan temellendirme serimizde bu gün SQL Injection kısmına bakacağız.
Tabi öncellikle SQL'ı doğru bir bakış açışıyla anlamalıyız, bunun için hali
hazırda bir konu açmıştım onun yeterince iyi olduğunu düşünüyorum o yüzden bu
konuyu okumadan önce SQL hakkında bilgi sahibi değilseniz bir diğer konumu okumanızı
tavsiye ederim.
Sıfırdan temellendirme serimizde bu gün SQL Injection kısmına bakacağız.
Tabi öncellikle SQL'ı doğru bir bakış açışıyla anlamalıyız, bunun için hali
hazırda bir konu açmıştım onun yeterince iyi olduğunu düşünüyorum o yüzden bu
konuyu okumadan önce SQL hakkında bilgi sahibi değilseniz bir diğer konumu okumanızı
tavsiye ederim.
Bu temellendirme dersinde öğrenecekleriniz
*SQL Injection temeli
*SQL Injection ile sayfa içinde gözükmeyen datalara ulaşma
*SQL Injection temeli
*SQL Injection ile sayfa içinde gözükmeyen datalara ulaşma
Basitçe SQL Injection:
Websiteye girdiğinizde, website üzerinde herhangi bir yönlendiriciye tıkladığınızda,
bilgisayarınız sayfa kodlarına göre bir istek oluşturur bunun en temel örneği;
bir market web sitesi üzerinde hediye kategörisine tıkladığınızı var sayalım, bilgisayarınız
söyle bir istek oluşturur:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Ardından bu isteği serverın database'ine yollar ve veriler bilgisayarınızda okutulup yansıtılır.
Kısaca oluşan görsel söyledir:
Websiteye girdiğinizde, website üzerinde herhangi bir yönlendiriciye tıkladığınızda,
bilgisayarınız sayfa kodlarına göre bir istek oluşturur bunun en temel örneği;
bir market web sitesi üzerinde hediye kategörisine tıkladığınızı var sayalım, bilgisayarınız
söyle bir istek oluşturur:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Ardından bu isteği serverın database'ine yollar ve veriler bilgisayarınızda okutulup yansıtılır.
Kısaca oluşan görsel söyledir:
ve bu isteğiniz bize yönlendireceği bilgileri sıralarsak söyle gözükücektir:
Burada ki select, from vb. nin anlamı söyledir:
SELECT(x): Seç*: Bütün sütunları
FROM(x): X'teki
WHERE(x,y): From'un x'inden = y'i al
AND: ve
Tüm kelimeleri yerlerine yerleştirdiğimizde
Seç bütün sütunları, prroducts'taki kategörilerde ki gifts'i al ve released değeri 1 olanları ver.
(Biliyorum, ilk başta anlaması epey karmaşık geliyor ve baya saçma gözüküyor, inanın bana bu gün yatmadan önce 1 2 dk'nızı
ayırsanız anında anlarsınız, gene de hala anlamayanlar SQL'ı doğru bakış açışıyla anlamak konuma bakabilir olabildiğince
detaylı anlattım, anlayacağınıza garanti verebilirim.)
Seç bütün sütunları, prroducts'taki kategörilerde ki gifts'i al ve released değeri 1 olanları ver.
(Biliyorum, ilk başta anlaması epey karmaşık geliyor ve baya saçma gözüküyor, inanın bana bu gün yatmadan önce 1 2 dk'nızı
ayırsanız anında anlarsınız, gene de hala anlamayanlar SQL'ı doğru bakış açışıyla anlamak konuma bakabilir olabildiğince
detaylı anlattım, anlayacağınıza garanti verebilirim.)
Fark ettiğiniz üzere bu istek bize sadece released yani yayınlanmış ürünleri gösteriyor peki veritabanı üzerinde
bulunan ve yayınlanmış ürünleri göremez miyiz?
Tabi ki görebiliriz, eğer released değerini her zaman 1 olacak sekilde ayarlarsak bize yayınlanmamış yani veritabanında
bize gösterilmeyenleri görmemizi sağlayacaktır;
SELECT * FROM products WHERE category = 'Gifts' AND released = 1'+or+1=1--+-
(sondaki "--+-" router'a 'hacı ben bura bir şeyler ekledim haberin ola' diyor)
yani released = 1' yada 1=1'dir kısaca veritabanı üzerinde bulunan her hangi bir gift ögesi'nin released değeri 0 olsa bile
bize gösterecektir.
Bunu 9. sınıf mantık konusu gibi düşünün sadece 0 vardı biz onu 0v1 yaptık bu durumda her zaman bize 1 değerini geri
döndürücektir.
Örnek olarak bunu siz yanıtlayın;
SELECT * FROM products WHERE category = 'Gifts' AND released = 0
eğer böyle olsaydı ne yapmalıydık? Yorumlarda yanıtlarınızı bekliyorum.
Dostlar bu günki konumuz bu kadardı umarım yardımcı olabilmişimdir, hatam varsa affınıza sığınırım
aklınıza bir şey takıldıysa yorumlarda belirtmekten çekinmeyin. SQL injection yapmak için acele etmeyin
gelecekte bu konu üzerine emin olun fazla kez değineceğim aklınızı erkenden karıştırmak istemiyorum
ayrıca renk kullanımım iyice 9 yaşında ki çocukların karalamasına benzedi
renk tercihim için bana tavsiye verebilir misiniz?
aklınıza bir şey takıldıysa yorumlarda belirtmekten çekinmeyin. SQL injection yapmak için acele etmeyin
gelecekte bu konu üzerine emin olun fazla kez değineceğim aklınızı erkenden karıştırmak istemiyorum
ayrıca renk kullanımım iyice 9 yaşında ki çocukların karalamasına benzedi
renk tercihim için bana tavsiye verebilir misiniz?
gerçekten 9 yaşında bir çocuk gibi boyamışım tüm kelimeleri