Neler yeni
Bughane Academy

Bughane Academy, bug bounty, web güvenliği ve sızma testi alanında kendini geliştirmek isteyenler için kurulmuş Türkçe odaklı bir topluluktur.

Burada; gerçek güvenlik açıkları, recon ve exploit teknikleri, payload & bypass yöntemleri, araçlar, scriptler ve write-up’lar topluluk tarafından paylaşılır ve tartışılır.

Birlikte öğren, birlikte üret, birlikte güçlen.

Analiz SQL İnj Sistemi Nasıl Manipüle Eder?

Zeki Kayaalp

Moderator
Usta Avcı
Katılım
2 Ocak 2026
Mesajlar
106
Tepkime puanı
122
Puan
43

SQL İnj Sistemi Nasıl Manipüle Eder?

https://zekikayaalp.medium.com/?sou...1c0ff7---------------------------------------






XSS sistemi nasıl manipüle eder yazımızdan sonra şimdi de SQL sistemi nasıl manipüle eder konusu üzerine konuşacağız.

Bu yazıda şu sorulara cevap bulacaksınız:

Backend neden kullanıcı inputunu komut gibi algılar?

SQL Injection neden hâlâ modern sistemlerde görülüyor?

SQL Injection sırasında database aslında neyi çalıştırır?

SQL İnj paylaodları genel olarak nelerdir?

SQL Injection payloadları neden her sistemde aynı çalışmaz?

SQL İnj payload seçimini neye göre yapıyoruz?

Payload sistemi nasıl manpüle eder?


SQL inj payload manipülasyonu XSS payloadlarından farkı nedir?

Bismilllah..

Sql injection saldırısı hepimizin bildiği üzere waf filtresinden ,tarayıcı CSP’sinden geçip backend bölümünden veri çekmektir.

Bunu çeşitli payloadlar ile yaparız. Bu yazımızda klasik ‘OR 1=1 — payloadları sisteme inj etmekle uğraşmayacağız.

Biz sistemin işleyişini çözmek istiyoruz. Arka planda nelerin döndüğünü ve sistemin nasıl manipüle edildiği üzerine konuşacağız.


Web sitesi nasıl çalışır?

1*o5MCN171HPgxEn_bzTLnxQ.png

Kullanıcının bir web sitesi login panelinde gördüğü şey sadece bu iki sorudan ibarettir ama backend tarafında işler çok daha farklı işliyor.

Girmiş olduğunuz kullanıcı adı — parola öncelikle bir SQL sorgusundan geçer:

1*57OANWQRkl28AqjGGPPuuw.png


Burada SELECT ile users tablosu seçilir

ordan kullanıcı adı : admin

şifresi ise 123456 olan kullanıcıyı çağırır


Eğer öyle bir kullanıcı varsa login olursunuz yoksa giriş reddedilir.

Buraya kadar her şey normal lakin asıl hata backendin kullanıcıdan gelen inputları güvenli veri olarak değil SQL cümlesinin bir parçası olarak kullanmasıdır.

Tüm manipülasyon burda başlar.

NASIL MI?

SQL inj saldırısı yeni bir sistem kurmak değildir. Zaten var olan bir sistemin çalışma mantığını değiştirir.

Burada saldırganın hedefi veri tabanı değil backend’in oluşturmuş olduğu QUERY yani SORGU Mantığıdır.

SQL INJECTION PSİKOLOJİSİ üzerine konuşalım her şey çözülecek kafanızda


Backend şu sorguyu oluşturur:

1*NF1FgcZJD7raISF4Xu2i6Q.png


Normal kullanıcı :

1*sp6qiBI8dhC1383G4b6V3A.png


Ama saldırgan ‘OR ‘1’=’1 gönderirse backend artık sorgu mantığını şöyle değişiriyor:

1*bZ8qdnPFH_9-K2la9Kf7QQ.png


Burada kullanıcı sadece backend’in sadece karar mekanizmasını değiştirmiştir.

Çünkü ‘1’=’1' her zaman doğru demek. Yani kullanıcı adı ve şifre koşulu daima TRUE döner.

backend mekanizması şunu sorar kendisine:

— Bana verilen bu isteği doğrulamam gerekiyor

ama koşul zaten doğru

o zaman girişi başarılı varsay


Pentester burada nasıl bir saldırıyı yaptı veya zorla mı giriş yaptı?

Hayır , sistem kendi query mantığıyla saldırganı içeri aldı.

1*9v4nvRc28d5pNQ_XueXhzw.png



İŞTE SQL INJECTION PSİKOLOJİSİ BUDUR.



Buraya kadar sistem mantığını ve psikolojisini işledik bundan sonraki aşamada biraz daha derine ve paylaoad mantığına inelim

SQL İnj paylaodları genel olarak nelerdir?



Burada payloadlar XSS payloadlarında olduğu gibi her birinin hedefi farklıdır.

bazıları:authentication bypass yapmaya,
bazıları:database hakkında bilgi toplamaya,

bazıları:query akışını değiştirmeye,

bazıları ise:sistem davranışını ölçmeye çalışır.


Authenticaton Bypass Payloadları:


Burada amaç login mekanizmasının karar mantığını değiştirmektir.

az önce verdiğimiz payload buna örnektir:

‘ OR ‘1’=’1


admin’ —

‘ OR TRUE —


Bu tip paylaodlar query mantığını daima TRUE yapıp kullanıcı doğrulamasını değiştirir.


UNION-Based Payloadlar


Burada amaç veri tabanından ek veri çekmektir.

Payload

UNION SELECT …


‘ UNION SELECT NULL,NULL —

‘ UNION SELECT table_name,NULL FROM information_schema.tables —


Burada psikoloji şöyledir:

Mevcut query sonucuna başka ek sonuçlar eklemeye çalışır.

yani saldırgan normal response’una kendi sorgusunu enjekte eder ve databaseden ek veri çekilmeye çalışır.

1*_l3-gh3Ko94j0HVMmwMVzQ.png


Error-Based Payloadlar

Adından da anlaşılacağı üzere burada payload’ın hedefi hata mesajlarından bilgi toplamaktır.


1*uKN5biOsmtJXdJ29ZtzfOg.png


Bazı hata mesajlarında:

tablo isimleri kolon isimleri veri tabanı türü veya query yapısı sızabiliyor.

Buradaki payloaddan maksat sistemin hata üretmesidir çünkü hata mesajı bazen bilgi sızdırabiliyor.





‘ AND updatexml(NULL,concat(0x3a,version()),NULL) —

gibi rastgele veriler gönderilebilir.


Boolean-Based Blind Payloadlar


Burada amaç TRUE/FALSE davranışı üzerinden bilgi toplamak.

Örneğin:

1*RkSvbpvsWZpiEAyYDHsaTQ.png


Burada sistem davranışı değişiyorsa saldırgan paylaodın çalıştığını anlar. Burada saldırgan veriyi görmez. Sistem davranışını okur.

Time-Based Blind Payloadlar


Burda amaç zaman gecikmesini okuyarak veri tabanını okumak

‘ WAITFOR DELAY ‘0:0:5’ —


‘ AND IF(1=1,SLEEP(5),0) —

‘ AND SLEEP(5) —

Eğer response gecikirse payload gecikmiştir. Bu yöntem özellikle hata mesajı olmayan ve response farkı göstermeyen sistemlerde kullanılır.


Stacked Query Payloadları


Üstüste yığılmıştan kasıt sisteme birden fazla sql inj enjekte etmektir.

Bir sorgu bittiğinde bir sonra ki sorgu başlatabilir.


‘; SELECT @@version —


Bu tip payloadlar veri silme ve yetki değiştirme gibi etkiler için kullanılır.


Burada saldırgan artık:
query’nin içine yeni query eklemeye çalışır.




Out-of-Band Payloadlar



SON OLARAK burada amaç ise veri tabanını dış dünyayla iletişimi zorlamak.

Bazı gelişmiş SQLi senaryolarında:
database DNS veya HTTP isteği gönderebilir.

Bu durumda saldırgan:
response’u uygulamadan değil,
kendi sunucusundan alır.


Bu artık klasik injection’dan çıkıp:
database davranış manipülasyonuna dönüşür.

Payload seçiminin rastgele olmamasının sebebinin anlaşılmış olduğunu sanıyorum.

SQL Injection, yalnızca bir güvenlik açığı değil; sistemin güvenilmeyen veriyi nasıl yanlış yorumladığının açık bir göstergesidir. Asıl kritik nokta saldırıyı görmek değil, bu manipülasyonun neden mümkün olduğunu anlamaktır.

Güvenli sistem tasarımı, kullanıcı girdisini asla doğrudan güvenmek yerine onu doğru şekilde ayrıştırmakla başlar. Bu yüzden her injection, aslında bir kod hatasından çok bir tasarım hatasıdır.

Sonuç olarak SQL Injection’ı anlamak, sadece saldırıyı değil sistemin mantığını da çözmektir.

ÖDEV:

What is SQL Injection? Tutorial & Examples | Web Security Academy​

In this section, we explain: What SQL injection (SQLi) is. How to find and exploit different types of SQLi…​

portswigger.net


Burdaki lab’ı çözüm yorumlarda belirtmeni istiyorum. Teorik bilgiyi pratiğe dökmeden öğrenemezsin.

 
Geri
Üst