‹ بازگشت به کتابخانه‌ی رایت‌آپ‌ها
SQL Injection — Blind / Second-Order شدت: بحرانی

Blind SQL Injection مبتنی بر زمان (Time-Based)

وقتی هیچ خطا و هیچ داده‌ای در پاسخ دیده نمی‌شود، اما می‌توان با تاخیر عمدی، درستی یک شرط را تشخیص داد.

نویسنده: تیم PentesterHub

در Blind SQLi، پاسخ سرور هیچ تفاوت ظاهری ندارد؛ اما می‌توان با دستوراتی مثل IF(condition, SLEEP(5), 0) (در MySQL) شرط دلخواه را تست کرد: اگر پاسخ ۵ ثانیه طول کشید، شرط درست بوده.

نحوه‌ی استخراج داده

چرا مهم است

نبود خطای قابل‌مشاهده به‌معنای امن بودن نیست؛ تاخیر پاسخ هم یک کانال نشتی داده (side-channel) کامل است.

راه‌حل

Prepared Statements همچنان تنها راه ریشه‌ای؛ محدودسازی زمان اجرای کوئری در سطح دیتابیس هم می‌تواند این تکنیک را کندتر (نه غیرممکن) کند.

تمرین عملی در آزمایشگاه‌های SQL Injection — Blind / Second-Order ›