A modern, interactive web platform for showcasing cybersecurity CTF (Capture The Flag) writeups and challenges. Built with Next.js, TypeScript, and Tailwind CSS.
- Interactive Writeup Gallery: Browse through categorized cybersecurity writeups
- Multi-Category Support: Web, Forensics, Cryptography, Binary Exploitation, PWN, OSINT, Hardware, Mobile, Steganography
- Responsive Design: Optimized for desktop and mobile viewing
- Markdown Support: Rich markdown rendering with syntax highlighting
- Search & Filter: Find writeups by category, difficulty, or event
- Modern UI: Clean, professional interface with smooth animations
- Static Site Generation: Fast loading with Next.js SSG
- π Web Exploitation: SQL injection, XSS, authentication bypasses
- π Forensics: Memory dumps, file analysis, digital evidence
- π Cryptography: RSA attacks, cipher breaking, hash analysis
- β‘ Binary Exploitation: Buffer overflows, ROP chains, exploitation
- π PWN: Return-to-libc, stack smashing, privilege escalation
- π΅οΈ OSINT: Open source intelligence gathering
- π§ Hardware: Hardware hacking and embedded systems
- π± Mobile: Android/iOS application security
- πΌοΈ Steganography: Hidden data in images and files
- Node.js 18+
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/mounir19000/ShellmatesWriteUpBank.git cd ShellmatesWriteUpBank -
Install dependencies
npm install # or yarn install -
Start the development server
npm run dev # or yarn dev -
Open your browser Navigate to http://localhost:3000
ShellmatesWriteUpBank/
βββ public/
β βββ writeups/ # Writeup markdown files and metadata
β β βββ index.json # Writeups index
β β βββ [writeupId]/ # Individual writeup folders
β βββ pics/ # Static images and icons
β βββ jsons/ # JSON data files
βββ src/
β βββ app/ # Next.js app directory
β β βββ page.tsx # Home page
β β βββ about/ # About page
β β βββ writeups/ # Writeup pages
β β βββ HowToSubmit/ # Submission guidelines
β βββ components/ # React components
β β βββ header.tsx # Navigation header
β β βββ footer.tsx # Site footer
β β βββ slider.tsx # Image slider
β β βββ ui/ # UI components
β βββ lib/ # Utility functions
βββ scripts/
β βββ build-writeups.js # Writeup management script
βββ package.json
-
Run the interactive script
node scripts/build-writeups.js
-
Follow the prompts to enter writeup details:
- Title
- Category
- Event name
- Difficulty level
- Author name
- Description
-
Edit the generated markdown file in
public/writeups/[writeupId]/writeup.md
- Create a new folder in
public/writeups/with a unique ID - Add a
writeup.mdfile with the following structure:
# Your Writeup Title
**Category:** Web
**Event:** Event Name
**Difficulty:** Medium
**Date:** 2024-08-22
**Author:** Your Name
## Description
Brief description of the challenge...
## Solution
Your detailed solution...- Update the index by running:
node scripts/build-writeups.js --rebuild
npm run dev- Start development server with Turbopacknpm run build- Build production applicationnpm run start- Start production servernpm run lint- Run ESLint for code qualitynode scripts/build-writeups.js- Manage writeups
- Next.js 15.3.0 - React framework with App Router
- React 19.0.0 - UI library
- TypeScript 5.0 - Type safety
- Tailwind CSS 4.0 - Utility-first CSS framework
- Radix UI - Accessible component primitives
- Lucide React - Beautiful icons
- Swiper - Touch slider component
- React Markdown - Markdown rendering
- Gray Matter - Frontmatter parsing
- Highlight.js - Code syntax highlighting
- Remark/Rehype - Markdown processing pipeline
- Connect your repository to Vercel
- Configure build settings:
- Build Command:
npm run build - Output Directory:
.next
- Build Command:
- Deploy automatically on push to main branch
-
Build the application
npm run build
-
Start the production server
npm start
We welcome contributions! Here's how you can help:
- Follow the writeup template format
- Include clear explanations and solution steps
- Add relevant screenshots or diagrams
- Test your writeup locally before submitting
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Write clear commit messages
- Update documentation as needed
- Test your changes thoroughly
This project is open source and available under the MIT License.
- Mounir Mostefai currently the co-lead of Shellmates - @mounir19000
If you have any questions or need help:
- Open an issue on GitHub
- Contact the maintainers
- Check the How to Submit page for guidelines
- Thanks to all CTF organizers and the cybersecurity community
- Inspired by the need for quality educational content
- Built with β€οΈ by the Shellmates community
Happy Hacking! π―