TGViewer
Try Hack Box Try Hack Box @tryhackbox · 6.91K subscribers
Post #2964 3.96K
🔖 بررسی SQL Injection (SQLi) : Blind, Time-Based, Error-Based - بخش اول

🔐 SQL Injection چیست؟

تزریق SQL (SQL Injection) یکی از رایج‌ترین و خطرناک‌ترین آسیب‌پذیری‌های امنیتی است که زمانی رخ می‌دهد که ورودی کنترل‌نشدهٔ کاربر مستقیماً داخل یک کوئری SQL قرار بگیرد.
در این حالت، مهاجم می‌تواند منطق کوئری را تغییر دهد و به داده‌ها دسترسی غیرمجاز پیدا کند، آن‌ها را تغییر دهد یا حتی حذف کند.
در سناریوهای شدیدتر، SQLi می‌تواند به اجرای دستورات در سطح سیستم‌عامل سرور منجر شود.

🧨 انواع SQL Injection

1. Classic / Error‑Based SQLi
استفاده از پیام‌های خطای SQL که با جزئیات نمایش داده می‌شوند برای استخراج ساختار دیتابیس (جداول، ستون‌ها و …).

2. Blind SQLi
هیچ خروجی یا خطای مستقیمی وجود ندارد؛ مهاجم نتیجهٔ کوئری را از طریق رفتار برنامه (True / False) استنتاج می‌کند.

3. Time‑Based Blind SQLi
مبتنی بر ایجاد تأخیر زمانی (مثل SLEEP() یا WAITFOR) برای تشخیص درست یا نادرست بودن شرط‌ها.

4. Out‑of‑Band SQLi
استفاده از کانال‌های ارتباطی جانبی مثل DNS یا HTTP Callback برای دریافت داده؛ زمانی کاربرد دارد که نه خروجی وجود دارد و نه تفاوت زمانی قابل تشخیص.

5. Second‑Order SQLi
ورودی مخرب ابتدا در دیتابیس ذخیره می‌شود و در مرحله‌ای دیگر (مثلاً هنگام پردازش بعدی) باعث اجرای تزریق SQL می‌گردد.

📍 SQL Injection کجا اتفاق می‌افتد؟

ا SQLi می‌تواند در هر نقطه‌ای رخ دهد که اپلیکیشن بر اساس ورودی کاربر به دیتابیس کوئری می‌زند، از جمله:

💠فرم‌های لاگین
💠 فیلدهای جستجو
💠فیلترها (دسته‌بندی، تاریخ و …)
💠پارامترهای GET و POST
💠فیلدهای مخفی (Hidden Fields)
💠هدرهای HTTP (User‑Agent، Referer و …)
💠کوکی‌ها

🕵️ شناسایی SQL Injection

تست‌های ساده اولیه:
' OR '1'='1
' OR 1=1 --

تست‌های پیشرفته‌تر (Time‑Based):
' AND SLEEP(5) --
' AND (SELECT 1 FROM dual WHERE SLEEP(5)) --

تست‌های منطقی (Boolean‑Based):
' AND 1=1 --   → رفتار عادی
' AND 1=2 -- → رفتار متفاوت

در سناریوهای Blind باید به این نشانه‌ها توجه کرد:

💠 تأخیر زمانی
💠 تفاوت در محتوای صفحه
💠 تغییر HTTP Status Code
💠 تغییر الگوی درخواست‌های شبکه

🗄 شناسایی نوع پایگاه داده (Database Engine)

تشخیص دیتابیس بک‌اند برای طراحی Payload دقیق‌تر حیاتی است:

MySQL
SELECT version();
SLEEP(5)

PostgreSQL
SELECT current_database();
pg_sleep(5)

MSSQL
SELECT @@version;
WAITFOR DELAY '00:00:05'

Oracle
SELECT banner FROM v$version;
DBMS_LOCK.SLEEP(5)


🔍 شما تا حالا با کدام نوع SQL Injection در پروژه یا تست نفوذ واقعی برخورد داشته‌اید؟ تجربتون را در کامنت‌ها به اشتراک بگذارید.

#باگ_بانتی
🆔 @TryHackBox
🆔 @TryHackBoxOfficial
🆔 @TryHackBoxStory
🆔 @RadioZeroPod
  • 👏 9
More from @tryhackbox
  1. Sep 29, 202606:: PORTS 25/465/587 اSMTP برای ارسال و انتقال ایمیل استفاده میشود ادامه در : https://x.c…
  2. Sep 29, 2026🎥 شروع دوره #رایگان Network+ در TryHackBox - معرفی دوره یکی از مدرسین تیم TryHackBox ( اق…
  3. Sep 28, 2026🔖 فقط یه FOFA dork ساده که خودم ساختم رو دراپ میکنم تا همه نسخه‌های vulnerable Grafana رو…
  4. Sep 28, 2026درود خدمت دوستان گرامی بنده اینجا روی حملات اکتیو دایرکتوری و مباحث ردتیم تمرکز خواهم کرد…
  5. Sep 28, 2026CVE یعنی چی؟ احتمالاً وقتی درباره یک آسیب‌ پذیری میخونی، اولین چیزی که میبینی یک شماره شبی…
  6. Sep 27, 2026ویندوز از هر عکسی که تا حالا پاک کردی، یه تصویر کوچک (thumbnail) نگه میداره. این تصاویر دا…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →