Biz duch kelgan SQLi (SQL injection) payloadlari in-band turiga kiradi, ya’ni biz yozgan so‘rov natijasidagi ma’lumotni to‘g‘ridan-to‘g‘ri veb-ilova orqali olishimiz mumkin bo‘lgan holatlardir.
Boshqa tomondan, blind SQL injection holatlari — bu bazadan hech qanday javob qaytmasligi va so‘rovning natijasi faqatgina ilovaning xatti-harakati orqali aniqlanadigan vaziyatlarni bildiradi. Bu usul boolean- yoki time-based mantiqqa asoslangan bo‘ladi.
Masalan, oddiy boolean-based blind SQL injection holatlarida, agar SQL so‘rovi TRUE yoki FALSE natija qaytarsa, ilova har xil, ammo bashorat qilinadigan javoblar beradi. Shuning uchun bu usul "boolean" deb ataladi. Bu natijalarni ilova interfeysi orqali ko‘rish mumkin bo‘ladi.
Time-based blind SQL injection esa, so‘rov natijasini aniqlash uchun ma’lumotlar bazasiga belgilangan vaqt davomida kutishni buyuradi. Ilovaning javob berish vaqtiga qarab, attacker (hujumchi) so‘rov natijasi TRUE yoki FALSE bo‘lganini aniqlashi mumkin.
Bizning zaif ilovamiz (**http://192.168.50.16/blindsqli.php**) boolean-based va time-based blind SQL injection zaifliklariga ega bo‘lgan kod qismini o‘z ichiga oladi.
Biz offsec va lab login ma'lumotlari bilan tizimga kirganimizdan so‘ng quyidagi sahifani ko‘ramiz:

15-rasm: Blind SQLi test qilish
URL manzilini diqqat bilan ko‘rib chiqadigan bo‘lsak, ilova user parametrini input sifatida olayotganini va bu qiymat hozirda tizimga kirgan foydalanuvchi – offsec – ga tengligini ko‘ramiz. Ilova foydalanuvchining yozuvini ma’lumotlar bazasidan so‘raydi va quyidagi qiymatlarni qaytaradi: Username, Password Hash va Description.
Boolean-based SQLi testini o‘tkazish uchun quyidagi payloadni URL'ga qo‘shib ko‘rishimiz mumkin:
<http://192.168.50.16/blindsqli.php?user=offsec>' AND 1=1 -- //
25-listing – Boolean-based SQLi ni test qilish
Bu yerda 1=1 har doim TRUE natija qaytaradi, ya’ni agar foydalanuvchi bazada mavjud bo‘lsa, ilova qiymatlarni qaytaradi. Bu sintaksis yordamida butun ma’lumotlar bazasini boshqa foydalanuvchilar uchun ham tekshirishimiz yoki so‘rovni kengaytirib, boshqa jadvallardan ma’lumotlar olishimiz mumkin.
Xuddi shu natijani time-based SQLi payload orqali ham olishimiz mumkin:
<http://192.168.50.16/blindsqli.php?user=offsec>' AND IF (1=1, sleep(3),'false') -- //
26-listing – Time-based SQLi ni test qilish
Bu holatda biz IF sharti orqali so‘rovga har doim TRUE bo‘ladigan holatni kiritdik. Agar foydalanuvchi mavjud bo‘lmasa, false qiymati qaytariladi.
Biz offsec foydalanuvchisi faol ekanini bilamiz, shuning uchun yuqoridagi URL payloadni Kali VM brauzeriga qo‘llasak, ilova taxminan uch soniyaga “hang” (kutish) holatiga tushishini ko‘ramiz.
Bu usul juda vaqt talab qiluvchi bo‘lishi mumkin, shuning uchun bu kabi hujumlar odatda sqlmap kabi vositalar yordamida avtomatlashtiriladi — bu haqida navbatdagi Learning Unit’da batafsil o‘rganamiz.