## https://sploitus.com/exploit?id=57BB64FC-9B0C-5165-B1DF-0B8643378F07
# آزمایشگاه تزریق SQL (SQL Injection Lab)
یک محیط آموزشی جامع برای یادگیری، آزمایش و دفاع در برابر حملات تزریق SQL.
## 📖 فهرست مطالب
- [معرفی](#معرفی)
- [ویژگیها](#ویژگیها)
- [ساختار پروژه](#ساختار-پروژه)
- [راهاندازی سریع](#راهاندازی-سریع)
- [استفاده](#استفاده)
- [آزمایشها](#آزمایشها)
- [ابزارها](#ابزارها)
- [دفاع](#دفاع)
- [گزارشگیری](#گزارشگیری)
- [مجوز](#مجوز)
## 🎯 معرفی
آزمایشگاه تزریق SQL یک محیط آزمایشی کامل برای:
1. **یادگیری مفاهیم تزریق SQL**
2. **آزمایش تکنیکهای مختلف نفوذ**
3. **پیادهسازی روشهای دفاعی**
4. **توسعه مهارتهای امنیتی**
این پروژه با هدف آموزش توسعهدهندگان و متخصصان امنیت طراحی شده است.
## ✨ ویژگیها
### 🎓 آموزشی
- محیط آزمایشی کنترل شده
- مثالهای عملی و واقعی
- مستندات فارسی کامل
### 🛡️ امنیتی
- آسیبپذیریهای عمدی برای آموزش
- پیادهسازی روشهای دفاعی
- سیستم تشخیص نفوذ
### 🔧 فنی
- پشتیبانی از SQLite
- ابزارهای تست خودکار
- سیستم گزارشگیری پیشرفته
### 🧪 آزمایشی
- انواع مختلف تزریق SQL
- پیلودهای متنوع
- سناریوهای واقعی
## 🗂️ ساختار پروژه
sqlite-injection-lab/
├── 📁 database/ # مدیریت پایگاه داده
│ ├── app.db # فایل پایگاه داده SQLite
│ ├── db_manager.py # مدیریت و راهاندازی دیتابیس
│ └── schema.sql # طرح پایگاه داده
├── 📁 scripts/ # اسکریپتهای تست
│ ├── advanced_attacks.py # حملات پیشرفته
│ ├── automated_pentest.py # تست نفوذ خودکار
│ ├── ids_system.py # سیستم تشخیص نفوذ
│ ├── sqlmap_integration.py # یکپارچهسازی با SQLMap
│ └── 📁 exploit_scripts/ # اسکریپتهای اکسپلویت
│ ├── time_based_exploit.py # اکسپلویت Time-Based
│ ├── union_exploit.py # اکسپلویت Union-Based
│ ├── blind_exploit.py # اکسپلویت Blind-Based
│ ├── second_order_exploit.py # اکسپلویت Second-Order
│ └── error_based_exploit.py # اکسپلویت Error-Based
├── 📁 app/ # برنامه اصلی
│ ├── vulnerable_app.py # برنامه Flask آسیبپذیر
│ ├── secure_db.py # کتابخانه امن دیتابیس
│ ├── waf_middleware.py # فایروال برنامه وب
│ ├── 📁 templates/ # قالبهای HTML
│ │ ├── index.html # صفحه اصلی
│ │ ├── vulnerable_login.html # صفحه لاگین آسیبپذیر
│ │ ├── secure_login.html # صفحه لاگین امن
│ │ ├── dashboard.html # داشبورد کاربر
│ │ ├── vulnerable_search.html # صفحه جستجوی آسیبپذیر
│ │ └── vulnerable_report.html # صفحه گزارش آسیبپذیر
│ └── 📁 static/ # فایلهای استاتیک
│ └── style.css # استایلهای CSS
├── 📁 payloads/ # مجموعه پیلودها
│ ├── sqlite_payloads.txt # پیلودهای SQLite
│ ├── bypass_waf.txt # پیلودهای عبور از WAF
│ ├── advanced_injection.txt # پیلودهای پیشرفته
│ └── payload_generator.py # تولید کننده پیلود
├── 📁 logs/ # فایلهای لاگ
├── 📁 reports/ # گزارشهای تست
├── config.py # تنظیمات پیکربندی
├── README.md # این فایل
└── راهنمای-کامل-فارسی.md # راهنمای فارسی کامل
## 🚀 راهاندازی سریع
### پیشنیازها
- Python 3.8 یا بالاتر
- pip (مدیریت پکیجهای Python)
### نصب و راهاندازی
```bash
# 1. دانلود یا کلون پروژه
git clone
cd sqlite-injection-lab
# 2. نصب وابستگیها
pip install flask sqlite3 requests beautifulsoup4
# 3. راهاندازی پایگاه داده
python database/db_manager.py
# 4. اجرای برنامه
python app/vulnerable_app.py
دسترسی
آدرس برنامه: http://localhost:5000
اعتبارهای پیشفرض:
مدیر: admin / Admin123
کاربر: user1 / User123
تست: test / Test123
🔬 استفاده
صفحههای اصلی
1. صفحه اصلی (/)
مرور کلی پروژه
دسترسی سریع به بخشها
راهنمای شروع
2. لاگین آسیبپذیر (/vulnerable_login)
آسیبپذیری: Classic SQL Injection
پیلودهای تست:
sql
' OR '1'='1
admin'--
' UNION SELECT 1,2,3--
3. جستجوی آسیبپذیر (/vulnerable_search)
آسیبپذیری: Union-Based SQL Injection
پیلودهای تست:
sql
' UNION SELECT name, sql FROM sqlite_master--
' UNION SELECT username, password_hash FROM users--
4. گزارش آسیبپذیر (/vulnerable_report)
آسیبپذیری: Time-Based Blind SQL Injection
پیلودهای تست:
sql
2024-01-01' AND randomblob(1000000000)--
5. لاگین امن (/secure_login)
پیادهسازی امن با Parameterized Queries
اعتبارسنجی ورودی
Rate Limiting
ابزارهای تست
1. تست خودکار
bash
python scripts/automated_pentest.py http://localhost:5000
2. تست پیشرفته
bash
python scripts/advanced_attacks.py
3. سیستم تشخیص نفوذ
bash
python scripts/ids_system.py
4. یکپارچهسازی با SQLMap
bash
python scripts/sqlmap_integration.py http://localhost:5000/vulnerable_login --advanced
🧪 آزمایشها
انواع تزریق SQL پشتیبانی شده
1. Classic SQL Injection
بایپس احراز هویت
استخراج داده
اجرای دستورات
2. Union-Based Injection
تشخیص تعداد ستونها
استخراج ساختار دیتابیس
بازیابی دادههای حساس
3. Blind SQL Injection
Boolean-Based
Time-Based
استخراج بیتی داده
4. Error-Based Injection
استخراج داده از خطاها
استفاده از توابع CAST
تشخیص نسخه دیتابیس
5. Second-Order Injection
ذخیره و اجرای پیلود
تغییر دادههای دیگر کاربران
افزایش سطح دسترسی
پیلودهای نمونه
بایپس لاگین
sql
' OR '1'='1
admin'--
' OR 'a'='a
استخراج اطلاعات
sql
' UNION SELECT sqlite_version(), NULL--
' UNION SELECT name, sql FROM sqlite_master--
' UNION SELECT username, password_hash FROM users--
تاخیر زمانی
sql
' AND (SELECT randomblob(1000000000))--
' OR (SELECT CASE WHEN (1=1) THEN randomblob(1000000000) ELSE 0 END)--
🛡️ دفاع
روشهای دفاعی پیادهسازی شده
1. Parameterized Queries
python
# ناامن
query = f"SELECT * FROM users WHERE username = '{username}'"
# امن
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (username,))
2. Input Validation
اعتبارسنجی طول
فیلتر کاراکترهای خطرناک
Whitelist validation
3. Least Privilege
محدودیت دسترسی دیتابیس
جداول سیستم فقط خواندنی
کاربران با حداقل دسترسی
4. Web Application Firewall
تشخیص الگوهای تزریق
Rate Limiting
بلاک IP های مشکوک
5. Logging & Monitoring
لاگگیری تمام کوئریها
تشخیص خودکار حملات
هشدارهای امنیتی
📊 گزارشگیری
انواع گزارشها
1. گزارش تست نفوذ
لیست آسیبپذیریها
سطح خطر
پیلودهای موفق
توصیههای اصلاحی
2. گزارش اکسپلویت
دادههای استخراج شده
ساختار دیتابیس
اطلاعات کاربران
لاگهای اجرا
3. گزارش SQLMap
خروجی کامل SQLMap
دادههای دامپ شده
خلاصه نتایج
محل ذخیره گزارشها
پوشه reports/
فرمتهای JSON و TXT
تاریخگذاری خودکار
👥 مخاطبان
توسعهدهندگان وب
یادگیری آسیبپذیریهای رایج
آشنایی با روشهای دفاعی
تست امنیتی برنامههای خود
متخصصان امنیت
تمرین تکنیکهای تست نفوذ
توسعه ابزارهای امنیتی
آموزش به تیمهای توسعه
دانشجویان و پژوهشگران
تحقیق در زمینه امنیت وب
انجام آزمایشهای کنترل شده
توسعه مهارتهای عملی
⚠️ هشدارها و محدودیتها
هشدارهای امنیتی
فقط برای آموزش: این پروژه فقط برای اهداف آموزشی طراحی شده است.
استفاده مجاز: فقط روی سیستمهایی که مالک آن هستید یا مجوز دارید آزمایش کنید.
عدم استفاده مخرب: استفاده از این ابزارها برای آسیب به سیستمهای دیگر غیرقانونی است.
مسئولیت: شما مسئول استفاده از این ابزارها هستید.
محدودیتهای فنی
SQLite: فقط پایگاه داده SQLite پشتیبانی میشود.
Python: نیاز به Python 3.8 یا بالاتر دارد.
Flask: فریمورک وب استفاده شده Flask است.
محیط آزمایشی: برای محیطهای تولید طراحی نشده است.
🤝 مشارکت
گزارش مشکلات
Issue جدید ایجاد کنید
مشکل را به طور کامل شرح دهید
کدهای مربوطه را ضمیمه کنید
پیشنهاد بهبود
Fork پروژه
تغییرات را ایجاد کنید
Pull Request ارسال کنید
توسعه ویژگیهای جدید
با maintainerها هماهنگ کنید
از استانداردهای کدنویسی پیروی کنید
تستهای واحد بنویسید
📚 منابع آموزشی
مستندات
OWASP SQL Injection Prevention Cheat Sheet
SQLite Official Documentation
Flask Security Documentation
دورههای آموزشی
OWASP Web Security Testing Guide
SANS Web Application Penetration Testing
Coursera: Web Security Fundamentals
ابزارها
SQLMap
Burp Suite
OWASP ZAP
📄 مجوز
این پروژه تحت مجوز MIT منتشر شده است.
text
مجوز MIT
کپی رایت (c) 2024 آزمایشگاه تزریق SQL
به هر شخصی که یک کپی از این نرمافزار و مستندات مرتبط
( "نرم افزار") را دریافت می کند، بدون هیچ هزینه ای، مجوز داده می شود
تا بدون محدودیت در حقوق استفاده از نرم افزار، از جمله
حقوق استفاده، کپی، تغییر، ادغام، انتشار، توزیع،
ساب لیسانس و/یا فروش کپی های نرم افزار، و اجازه می دهد
به افرادی که نرم افزار به آنها ارائه می شود، مشروط بر موارد زیر:
اعلامیه حق چاپ فوق و این مجوز باید در همه
کپی ها یا بخش های قابل توجهی از نرم افزار گنجانده شود.
نرم افزار "همانطور که هست" ارائه می شود، بدون هیچ گونه تضمینی،
صریح یا ضمنی، از جمله اما نه محدود به تضمین های
تجاری، مناسب بودن برای هدف خاص و عدم نقض.
در هیچ موردی نویسندگان یا دارندگان حق چاپ مسئول
هر گونه ادعا، خسارت یا مسئولیت دیگری نباشند،
خواه در یک اقدام قرارداد، تخلف یا غیره، ناشی از،
خارج از یا در ارتباط با نرم افزار یا استفاده یا سایر معاملات
در نرم افزار.
🙏 تقدیر و تشکر
جامعه OWASP برای استانداردها و راهنماها
توسعهدهندگان SQLite و Flask
تمامی مشارکتکنندگان و تستکنندگان
📞 پشتیبانی
برای پشتیبانی و سوالات:
Issues در GitHub را بررسی کنید
مستندات فارسی را مطالعه کنید
از انجمنهای تخصصی کمک بگیرید
یادداشت پایانی: امنیت یک سفر است، نه مقصد. به یادگیری ادامه دهید و مسئولیتپذیر باشید.
ساخته شده با ❤️ برای جامعه امنیت سایبری ایران