Neler yeni

Soru sor

Topluluğumuzdan Sorular Sorun ve Cevaplar Alın

Cevap

Soruları Cevaplayın ve Konunuzda Uzman Olun

İletişim Personeli

Uzmanlarımız Sorularınızı Cevaplamaya Hazır

manuel SQL ne dir

Reklam Ver Reklam Ver

siyahmuahafız

Rektör
Yönetici
Rektör
Katılım
14 Nis 2021
Mesajlar
317
Tepkime puanı
79
Puanları
28

Reputation:

Temel SQL Komutları​

Select:​

SELECT secilecek_alan_alanlar FROM tablo_veritabanı_kolon
Kullanımı: SELECT * FROM personel
Yukarıdaki kod parçaçığı ile “SELECT” sql komutunun genel kullanımını gördünüz. Yukarıda yaptığımız işlem, personel tablosundan tüm verileri seçmek oldu.

Yani anlayacağınız üzere “select” komutu tablodan veri seçmemize olanak sağlıyor.

From:​

From komutu seçimlerimizi hangi veri tabanından, hangi tablodan yada hangi kolondan yaptığımızı belirtmemizi sağlıyor. Kullanımı ise Select kısmında belirtildiği gibi.

Where:​

SELECT secilecek_alan_alanlar FROM tablo_veritabanı_kolon WHERE şartlar
Kullanımı: SELECT * FROM personel WHERE ad=”Ahmet”
Yukarıda, yine personel tablosundan veri seçimi yaptık. Fakat bu sefer Where ile şartımızı belirttik. tablodan sadece adı Ahmet olan personellere ait tüm bilgileri çektik.

Yani “where” komutu tablodan çekeceğimiz veriyi şartlandırmamızı sağlıyor. Where’den sonra şartlarımızı belirtiyoruz.

Or:​

SELECT secilecek_alan_alanlar FROM tablo_veritabanı_kolon WHERE şart1 or şart1
Kullanımı: SELECT * FROM personel WHERE ad=”Ahmet” or ad=”Serpil”
Yukarıdaki kullanımda tablodan adı Ahmet olan yada Serpil olan personelleri çektik.
Matematikteki yada bağlacı. Diğer programlama dillerinde bildiğimiz “or”. Seçim yaparken ifadelerin doğru olup olmamasına göre önermeyi doğru yada yanlış olara nitelendirmemize olanak sağlıyor. Eğer or içeren önermede bir tane doğru ifade varsa, önermeyi doğru kabul ediyoruz.

Order By:​

SELECT secilecek_alan_alanlar FROM tablo_veritabanı_kolon WHERE şart1 or şart1 ORDER BY siralama_parametresi
Kullanımı: SELECT * FROM personel WHERE ad=”Ahmet” or ad=”Serpil” ORDER BY dogum_tarihi
Yukaridaki kod ile aldığımız sonuçları doğum tarihine göre sıraladık. (* ile tüm verileri belirtmiştik, bu verilerin içerisinde dogum_tarihi bölümü olduğunu unutmayın)

Anlayacağınız üzere Order By, sonuçlarımızı belirlediğimiz parametreye göre sıralamamızı sağlıyor.

Union:​

SELECT secilecek_alan_alanlar FROM tablo_veritabanı_kolon WHERE şart1 or şart1 UNION SELECT secilecek_alan_alanlar FROm tablo_veritabanı_kolon_2 WHHERE sart ORDER BY siralama_parametresi
Kullanımı: SELECT ad, soyad, dogum_tarihi FROM personel UNION SELECT ad,soyad,dogum_tarihi FROM yönetici ORDER BY dogum_tarihi
Yukarıdaki kod parçası ile personel tablosundan ve ve yönetici tablosundan “ad, soyad ve doğum tarihi” bilgilerini çekip doğum tarihine göre sıraladıktan sonra tek bir tablo ile ekrana yazdırdık.

Bana göre en önemli SQL veritabanı komutlarından bir tanesi “UNION” Union ifadesi çoklu seçim yaptığımızda seçimlerimizi birleştirerek bize tek bir tabloymuş gibi getiriyor fakat dikkat etmemiz gereken bazı hususlar var:
  • Union kullanarak birleştirdiğimiz her seçim ifadesi eşit sayıda kolon içermelidir. (Kolon=Column)
  • Kolonlar aynı veri tipine sahip olmalıdır.
  • Seçilen kolonlar aynı sırada olmalıdır.
  • Union ile tekrarlı ifadeler 1 kez alınır. Hepsini seçmek için “UNION ALL” kullanabilirsiniz.

Versiyon, Database İsmi ve Kullanıcı Bilgileri – version(), database(), user():​

Sırada işimize yarayabilecek temel SQL fonksiyonları var. tek tek bu fonsiyonları inceleyelim.

version()​

version() fonksiyonu veritabanına ait versiyon bilgisini verir.

database()​

database() fonksiyonu veritabanının ismini verir.

user()​

user() fonksiyonu MySQL bağlantısı için o anki güncel kullanıcı bilgisini verir.

SQL Injection​

SQL Açığı Tespiti​

DVWA arayüzünü açıp, SQL injection bölümüne gittim. Karşımda benden “id” değeri girmemi isteyen submit kutucuğu var. 1, 2 ,3.. gibi değerler denedim. Bana verdiğim id değerine göre o id’ye sahip olan kullanıcıya ait bilgileri getirdi.

MySQL tarafında dönen kod aşağıdakine benzer birşey olmalı:

SELECT id, firstname, surname FROM tablo WHERE id="girdiğim değer"
Peki ben buraya kendi sql kodumu nasıl enjekte edebilirim? Bunun için hemen bir deneme yapıyorum. Benden istenilen id değeri olarak ” 1′ ” değerini giriyorum. Eğer tırnak işareti ile girdiğim id değeri, websitesine SQL Syntax Error verdirirse burada SQL açığı olabilir diye düşünmemi sağlayacak.
 

meyus

Asteğmen
Asteğmen
Katılım
16 Haz 2021
Mesajlar
29
Tepkime puanı
11
Puanları
8
Konum
karanlık

Reputation:

faydalı bir konu eline sağlık
 
Üst