Interactive CTF Platform for Web Application Security
Live Demo • Features • Installation • Challenges • Architecture
Explab is a browser-based cybersecurity learning platform focused on hands-on web security challenges. Designed for students and aspiring security professionals, Explab provides a safe, guided environment to practice offensive web security techniques through realistic vulnerability scenarios.
- Isolated Challenge Environments - Each challenge runs independently with known vulnerabilities
- Real-World Scenarios - Vulnerabilities crafted to mimic production security flaws
- Automatic Validation - Server-side flag verification with immediate feedback
- Progress Tracking - Persistent user statistics and challenge completion history
- Competitive Leaderboards - Compare progress with the security learning community
SQL Injection (SQLi) • Cross-Site Scripting (XSS) • Cross-Site Request Forgery (CSRF) • Insecure Direct Object References (IDOR) • Session Fixation • Logic Bugs
Live Platform: https://hackerlabs-study-platform.vercel.app/
Create an account and start solving security challenges immediately.
┌──────────────┐
│ Browser │
│ (Next.js) │
└──────┬───────┘
│
├─────────────────┐
│ │
┌──────▼───────┐ ┌──────▼─────────┐
│ Next.js API │ │ Challenge Envs │
│ Routes │ │ (Isolated) │
└──────┬───────┘ └────────────────┘
│
┌──────▼───────┐
│ MongoDB │
│ (Database) │
└──────────────┘
- Node.js 18+ and npm
- MongoDB (local or Atlas)
- Docker (optional, for containerized challenges)
- Clone the repository
git clone https://github.com/yourusername/explab.git
cd explab- Install dependencies
npm install- Configure environment variables
Create a .env.local file in the root directory:
# MongoDB
MONGODB_URI=your_mongodb_connection_string
# NextAuth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret
# Challenge Environment (optional)
DOCKER_HOST=unix:///var/run/docker.sock- Initialize the database
npm run db:seed- Start the development server
npm run dev- Access the application
Open http://localhost:3000 in your browser.
Each challenge is defined using a JSON-based format:
{
"id": "sqli-auth-bypass",
"title": "SQL Injection: Authentication Bypass",
"category": "SQL Injection",
"difficulty": "beginner",
"description": "Exploit SQL injection to bypass login authentication",
"flag": "EXPLAB{sql_1nj3ct10n_basic}",
"hints": [
"Try using SQL comments to bypass password validation",
"The application uses string concatenation for SQL queries"
],
"endpoint": "/api/challenges/sqli-auth"
}- Define challenge metadata in
/challenges/definitions/ - Implement vulnerable endpoint in
/pages/api/challenges/ - Add challenge to database seed script
- Test flag validation logic
- Submit pull request with challenge documentation
- Create an account and log in
- Browse challenges by category or difficulty
- Select a challenge to begin
- Exploit the vulnerability using learned techniques
- Submit the flag to validate your solution
- Track progress on your dashboard
- Fork the repository
- Create a new challenge using the template
- Test the challenge locally
- Submit a pull request with:
- Challenge definition JSON
- Vulnerable endpoint implementation
- Solution write-up
- Educational notes
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Framer Motion - Smooth animations and transitions
- Three.js - 3D graphics and visual effects
- Next.js API Routes - Serverless API endpoints
- MongoDB - NoSQL database for user data and challenge metadata
- Mongoose - MongoDB object modeling
- NextAuth - Authentication and session management
- Docker - Containerized challenge environments (optional)
- Vercel - Hosting and serverless functions
Contributions are welcome! Whether you're adding new challenges, improving documentation, or fixing bugs, your help makes Explab better for the learning community.
This project is licensed under the MIT License - see the LICENSE file for details.
- OWASP for vulnerability classification and educational resources
- Hack The Box and TryHackMe for platform inspiration
- Open-source security community for vulnerability research