Sql inyeksiya va undan ximoyalanish


Download 163.39 Kb.
Pdf ko'rish
bet1/2
Sana12.12.2021
Hajmi163.39 Kb.
#180001
  1   2
Bog'liq
MBX Mustaqil ish



SQL inyeksiya va

undan ximoyalanish

221-17 guruh talabasi Buzrukov Bahodir



SQL inyeksiya nima ?

Ilovaning kamchiligidan foydalanib ma’lumot kiritiladigan



qismlarga SQL so’rovlarni inyeksiya qilish orqali

ma’lumotlar maxfiyligiga, butunligiga, ishonchliligiga

tahdid qilish usuliga SQL inyeksiya deyildi.

Bunday turdagi tahdidlar 2007 – 2010 yillarda



ommalashgan va shu yillardagi ilovalarning eng katta 10 ta 

kamchiligi qatoriga kiritilgan.




SQL inyeksiya nima ?

SQL inyeksiyaning birnecha turlari mavjud bo’lib ularning



asosan 3 ta katta turi farqlanadi. Ular:

Mantiqiy qiymatga asoslangan SQL inyeksiya;



UNION komandasiga asoslangan SQL inyeksiya;

Zanjirli so’rovga asoslangan SQL inyeksiya.



SQL inyeksiya orqali tahdid qilishda ma’lumotlar qay darajada

tasvirlanishiga qarab hujumlar oshkor, va ko’r turlariga bo’linadi.




Oshkora SQL inyeksiya

Bunday hujumlarda ilova natijalarni ekranga chiqarishi



kerak bo’ladi. Masalan qidiruv natijalari ekranga chiqishi,

maxsus id yoki loginga tegishli ma’lumotlarni ekranga

chiqarilishi oshkora SQL inyeksiya tahdidini yuzaga

keltiradi.




Ko’r SQL inyeksiya

Bunday turdagi hujumda ilova hech qanday



ma’lumot taqdim etmaydi. Bunday taqdirda

ma’lumot olish uchun boshqacharoq usllarni

qo’llashga to’g’ri keladi.



SQL inyeksiya turlari

Mantiqiy qiymatga asoslangan SQL inyeksiya



Oddiy inyeksiya

Union komandasiga asoslangan inyeksiya



Xatoga asoslangan inyeksiya

Vaqtga asoslangan inyeksiya



Zanjirli so’rovga asoslangan inyeksiya




Mantiqiy qiymatga asoslangan SQL inyeksiya

Odatda qidirish amallari WHERE komandasi orqali bajariladi. Ya’ni WHERE



komandasi kerakli qiymat topilganda true qiymat oladi va natijani qaytaradi.

Agar ilovada SQL inyeksiyaga yo’l qo’yilgan bo’lsa mantiqiy true qiymatidan

foydalanib WHERE komandasini aldash mumkin. WHERE true komandasi

barcha qiymatlarn qaytaradi. Uni shaklini o’zgartirib WHERE '1'='1' bilam

almashtirish mumkin. Bunday tahdidni amalga oshirish uchun ilovada

ishlatilgan SQL so’rov haqida tasavvurga ega bo’lish kerak bo’ladi. U tahminan

quyidagcha bo’lishi mumkin:

SELECT …, …. FROM … WHERE … = '$qiymat’;



Bu so’rov qachonki WHERE komandasi ture qiymat olganda natija qaytaradi.




Mantiqiy qiymatga asoslangan oddiy SQL 

inyeksiya

Agar biz $qiymat so’zi o’rniga o’zimizning SQL komandamizni inyeksiya qilsak



u quyidagi ko’rinishda bo’ladi:

23123' or '1'='1



Ushbu qiymatni olganda SQL so’rov quyidagi ko’rinishga keladi

SELECT …, … FROM … WHERE id='23123' or '1'='1’;



Bunday SQL so’rov bizga jadvaldagi barcha ma’lumotlarni chiqarib beradi!

Bu turdagi hujumda ma’lumotlar ochiq taqdim etilgani uchun oshkora tahdid



jisoblanadi.


Union buyrug’iga asoslangan SQL 

inyeksiya. 

Bunday turdagi inyeksiya ma’lumotlar bazasidagi ma’lumotlar taqdim



etilmagan holda ham taqdim etilmgan holda ham ishlatilishi mumkin. Aytaylik

jadvaldagi barcha ko’rsatilgan ma’lumotlarni chiqara olamiz. Ammo boshqa

tablitsadagi ma’lumotlarni chiqara olmaymiz. Bunda UNION komandasi orqali

buni amalga oshirish mumkin bo’ladi. Bunday hujumga quyidagi kodni misol

qilib keltirishimiz mumkin.

' UNION SELECT username, password FROM users--



Bunday hujumdagi muammo boshqa tablitsaning nomini va tablitsa

ustonlarining nomini bilish kerak bo’ladi. Bu ma’lumotlarni olish uchun esa

xatoga asoslangan va vaqtga asoslangan hujumlardan foydalanish kerak

bo’ladi.



Xatoga asoslangan SQL inyeksiya

Bunda so’rov yuboriladi va unda kerakli ma’lumotni bilib olish uchun tahminiy



variant taqdim etiladi. Agar xatolik yuz bersa demak varinatimiz xato, agar 

xatolik yuz bermasa demak bizning variantimiz to’g’ri bo’lib chiqadi. Bunday

usulda hujum qilish uchun ma’lumotlar bazasi strukturasini yaxshi bilish kerak

bo’ladi. Avval ma’lumotlar bazasi versiyasi tekshirib ko’riladi. So’ngra bundan

foydalanib ma’lumotlar bazasining struktura fayllariga hujum qilinadi. 

Struktura fayllarda barcha jadvallarning nomlari va barcha ustunlarning

nomlari saqlanadi. Bularni bilib olgandan so’ng UNION komandasi orqali hujum

uyushtirish mumkin bo’ladi. Bunday hujumga quyidagi kodni misol qilib

keltirish mumkin:

https://shop.example.com?article=4 AND substring(database_version(),1,1) = 2




Vaqtga asoslangan SQL inyeksiya

So’rov jo’natilganda tizim xatolik yzuberganida turli xatolar berishi mumkin.



Qanday xatolik yuz berganini yashiradigan ilovalarda xatoga asoslangan SQL

inyeksiya yordam bermaydi. Shunday vaziyatda vaqtga asoslangan SQL

inyeksiyani qo’llash mumkin. Bunda kerakli ma’lumot taxmin qilinadi va agar

ma’lumot to’g’ri kelsa kutib turish so’raladi. Bu orqali ma’lumotlarga ega

bo’lish mumkin bo’lad. Bunga quyidagi kodni misol qilib keltirish mumkin:




Download 163.39 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling