Merhaba ben saldırı timlerinden Bunjo,
"Manual SQL Hacking" kavramını ele alacağım ve uygulamalı şekilde
örnek olarak hazırlanmış olan bir site üzerinde veritabanından veri dump işlemi yapacağız.
Veri Tabanı
Veritabanı (database), bilgilerin düzenli bir şekilde depolandığı, yönetildiği ve erişildiği bir elektronik sistemdir.
Veritabanları genellikle büyük miktarda veriyi güvenilir bir şekilde saklamak, düzenlemek, sorgulamak ve güncellemek amacıyla kullanılır.
Bir veritabanı, tablolar, satırlar ve sütunlar gibi yapıları içerir. Tablolar, belirli bir konu veya veri türüne ait bilgilerin tutulduğu yapısal birimlerdir.
Satırlar, bu tablolardaki tek bir veri kaydını temsil ederken, sütunlar belirli bir veri türünü içerir.
İşletmeler, kurumlar, web siteleri ve birçok bilgi tabanlı uygulama, veritabanlarını kullanarak verileri etkin bir şekilde yönetir.
Kısacası bilgileriniz bu kısımda saklanır.
In-Band SQLi (Klasik SQLi)
Bir bilgisayar korsanı saldırıyı başlatmak ve sonuçları toplamak için aynı iletişim kanalını kullandığında In-Band SQLi oluşur.
Error-Based SQLi
Hata tabanlı SQLi, hata mesajlarına dayanan bir in-band enjeksiyon tekniğidir. Bilgisayar korsanları,
veri tabanı yapısı hakkında bilgi toplamak için uygulamayı sürekli olarak hatalar için araştırır.
Hata tabanlı SQL enjeksiyonları, bir saldırganın tablo adları ve içerik gibi verileri görünür hatalardan almasına olanak tanır.
Bazı durumlarda, bir bilgisayar korsanının tüm veri tabanını numaralandırması için hata tabanlı SQL enjeksiyonu yeterlidir.
veri tabanı yapısı hakkında bilgi toplamak için uygulamayı sürekli olarak hatalar için araştırır.
Hata tabanlı SQL enjeksiyonları, bir saldırganın tablo adları ve içerik gibi verileri görünür hatalardan almasına olanak tanır.
Bazı durumlarda, bir bilgisayar korsanının tüm veri tabanını numaralandırması için hata tabanlı SQL enjeksiyonu yeterlidir.
Union-Based SQLi
Union tabanlı SQLi, UNION SQL operatörünün güvenlik açıklarından yararlanan bir in-band enjeksiyondur.
UNION komutu, bir veya daha fazla ek SELECT sorgusu yürütür ve sonucu orijinal sorguya ekler.
Saldırgan, veri tabanındaki diğer tablolardan veri almak için genişletilmiş sonuçlardan yararlanabilir.
Union tabanlı SQLi, yalnızca orijinal ve yeni sorgular aynı sayıda ve veri türünde sütunlara sahipse çalışır.
Amacım SQL Injection türlerini anlatmak olmadığı için kısa kesiyorum daha fazlası için bknz. SQL Injection Türleri
Uygulamalı In-Band SQL Injection
Kavramları öğrenme sürecini tamamladığınıza göre şimdi sıra uygulama kısmına geldi.
Kullanacağımız site: Tıklayınız.
1- Siteye girişimizi yapıyoruz.
Bu kısımda bize eğitim amaçlı site olduğunu söylüyor.
2- bu kısıma tırnak koyarak hata mesajı almaya çalışıyoruz.
3- site de açık olduğunu fark ediyoruz ve "order by x" komutu ile kolon sayısını tespit etmeye çalışıyoruz
Link: artists
"order by 1" yaptığım zaman bir hata almamam sitede bir adetten daha fazla kolon sayısı olduğu anlamına geliyor.
4- "order by 4" kullandığım zaman hata alıyorum ve 3 kolon olduğunu anlıyorum.
Link: pictures
5- kayıt çekmek için "union select" kullanıyorum.
Link: artists
1. artist değerindeyiz şu anda
2. artist değerine veya başka bir değere geçebilirsek eğer uzaktan kod çalıştırarak başka bilgiler de elde edebileceğiz.
gözüktüğü gibi artist ismi değişti fakat hala bir hata almadık bu bize siteyi sömürebileceğimizi gösteriyor.
Link: https://testphp.vulnweb.com/artists.php?artist=0 union select 1,2,3-- -
bakın bu kısımda artisti 0 olarak aldığımızda bir kayıt tam olarak dönmedi biz de bunu kullanarak istedğimiz kodların çıktılarını artık ekrana yansıtabiliyor olacağız.
union select ile kullandığımız 2 ve 3 değerleri ekrana yansıtıldı yani union select 1,database(),3 gibi bir ifade kullanarak 2 kısmına hangi databasenin kullanıldığını yazdırabiliriz ekstradan istediğiniz komutlarıda artık çalıştırabilirsiniz, genel olarak bu açıkta mantık böyle ben hızlı hızlı adımlarla anlattım.
version ve database:
4- tablo ismini öğrenmek
Link:
artists
5- bütün tabloları almak
Link:
artists
6- kolon isimlerini öğrenmek
Link:
artists
7- kullanıcı adınını ve şifresini almak
Link: artists
Özel Teşekkür
@S3SS1Z T3AM
@P4$A
Çok uğraştım konuya baya uzun oldu benden bu kadar arkadaşlar herhangi bir hatam olduysa yazarsanız sevinirim.
Beğenmeyi unutmayınız, iyi forumlar.
UNION komutu, bir veya daha fazla ek SELECT sorgusu yürütür ve sonucu orijinal sorguya ekler.
Saldırgan, veri tabanındaki diğer tablolardan veri almak için genişletilmiş sonuçlardan yararlanabilir.
Union tabanlı SQLi, yalnızca orijinal ve yeni sorgular aynı sayıda ve veri türünde sütunlara sahipse çalışır.
Amacım SQL Injection türlerini anlatmak olmadığı için kısa kesiyorum daha fazlası için bknz. SQL Injection Türleri
Uygulamalı In-Band SQL Injection
Kavramları öğrenme sürecini tamamladığınıza göre şimdi sıra uygulama kısmına geldi.
Kullanacağımız site: Tıklayınız.
1- Siteye girişimizi yapıyoruz.
Bu kısımda bize eğitim amaçlı site olduğunu söylüyor.
2- bu kısıma tırnak koyarak hata mesajı almaya çalışıyoruz.
3- site de açık olduğunu fark ediyoruz ve "order by x" komutu ile kolon sayısını tespit etmeye çalışıyoruz
Link: artists
"order by 1" yaptığım zaman bir hata almamam sitede bir adetten daha fazla kolon sayısı olduğu anlamına geliyor.
4- "order by 4" kullandığım zaman hata alıyorum ve 3 kolon olduğunu anlıyorum.
Link: pictures
5- kayıt çekmek için "union select" kullanıyorum.
Link: artists
1. artist değerindeyiz şu anda
2. artist değerine veya başka bir değere geçebilirsek eğer uzaktan kod çalıştırarak başka bilgiler de elde edebileceğiz.
gözüktüğü gibi artist ismi değişti fakat hala bir hata almadık bu bize siteyi sömürebileceğimizi gösteriyor.
Link: https://testphp.vulnweb.com/artists.php?artist=0 union select 1,2,3-- -
bakın bu kısımda artisti 0 olarak aldığımızda bir kayıt tam olarak dönmedi biz de bunu kullanarak istedğimiz kodların çıktılarını artık ekrana yansıtabiliyor olacağız.
union select ile kullandığımız 2 ve 3 değerleri ekrana yansıtıldı yani union select 1,database(),3 gibi bir ifade kullanarak 2 kısmına hangi databasenin kullanıldığını yazdırabiliriz ekstradan istediğiniz komutlarıda artık çalıştırabilirsiniz, genel olarak bu açıkta mantık böyle ben hızlı hızlı adımlarla anlattım.
version ve database:
4- tablo ismini öğrenmek
Link:
artists
5- bütün tabloları almak
Link:
artists
6- kolon isimlerini öğrenmek
Link:
artists
7- kullanıcı adınını ve şifresini almak
Link: artists
Özel Teşekkür
@S3SS1Z T3AM
@P4$A
Çok uğraştım konuya baya uzun oldu benden bu kadar arkadaşlar herhangi bir hatam olduysa yazarsanız sevinirim.
Beğenmeyi unutmayınız, iyi forumlar.