CTF Walkthroughs 🚩

Welcome to the repository for my personal Capture The Flag (CTF) walkthrough blog! This site serves as my digital notebook where I document my solutions and learnings from various CTF challenges.

✨ Purpose

The main goal of this project is to:

  1. Reinforce Learning: Writing down the steps helps solidify understanding.
  2. Create a Personal Knowledge Base: Easily searchable notes for future reference.
  3. Share Knowledge (Potentially): Offer insights to others tackling similar challenges.
  4. Experiment: Play with a modern note-taking and publishing workflow.

πŸ› οΈ Technology Stack

This blog is built using a combination of tools that streamline the writing and publishing process:

  • Obsidian: Used as the primary writing environment. It’s a powerful, local-first Markdown knowledge base. All walkthroughs are written and organized as Markdown notes within an Obsidian vault.
  • Quartz: A fast, open-source static site generator specifically designed to publish Obsidian notes as a website. It handles linking, backlinking, graph visualization, and more, converting the Markdown vault into a deployable static site.
  • GitHub:
    • Version Control: The Obsidian vault (or the relevant content part of it) and the Quartz configuration are stored here.
    • Hosting: The static site generated by Quartz is hosted using GitHub Pages.
  • Markdown: The lightweight markup language used for writing all content.

πŸš€ Workflow

My typical workflow for adding a new CTF walkthrough looks like this:

  1. Solve: Participate in a CTF / Solve a challenge.
  2. Write: Create a new note in my dedicated Obsidian vault (usually within a content or walkthroughs folder). I write the entire walkthrough using Markdown, embedding images and code snippets as needed. I use Obsidian’s linking ([[wikilinks]]) to connect related concepts or challenges.
  3. Frontmatter: Add necessary frontmatter (like title, date, tags) to the top of the Markdown file for Quartz to process correctly.
  4. Commit & Push: Commit the changes (new notes, updated notes, added images) in the vault/content folder to this GitHub repository.
    git add .
    git commit -m "Add walkthrough for [CTF Name/Challenge Name]"
    git push origin main
  5. Build & Deploy: Pushing to the main branch automatically triggers a GitHub Action (configured via Quartz setup) that:
    • Checks out the repository.
    • Uses Quartz to build the static website from the Markdown files.
    • Deploys the generated static files (public folder contents) to the gh-pages branch.
  6. Live: GitHub Pages serves the content from the gh-pages branch, making the new walkthrough live on the blog!

🌐 Live Site

You can view the live blog here: [Link to your live blog] (e.g., https://your-username.github.io/your-repo-name/)

(Note: It might take a minute or two for changes to appear live after pushing due to the GitHub Actions build and deployment process.)

πŸ“ Writing Content (For My Reference)

  • Create new .md files inside the content directory (or whichever folder Quartz is configured to read).
  • Use standard Markdown syntax.
  • Embed images by placing them in an assets or images folder and using Markdown image syntax (![alt text](path/to/image.png)).
  • Use Obsidian [[wikilinks]] for internal links.
  • Ensure necessary frontmatter is present (check quartz.config.ts or documentation). Example:
    ---
    title: My Awesome CTF Walkthrough
    date: YYYY-MM-DD
    tags:
      - web
      - sqli
      - ctf_platform
    ---
     
    # My Awesome CTF Walkthrough
     
    Here's how I solved it...

πŸ”§ Setup & Configuration (For My Reference)

  • Obsidian Vault: Local folder managed by Obsidian.
  • Quartz Project: This repository contains the Quartz configuration files (quartz.config.ts, quartz.layout.ts, etc.) and the content folder (which might be the vault itself or a subfolder).
  • GitHub Repository: Remote storage and trigger for deployment.
  • GitHub Pages: Configured in repository settings to serve from the gh-pages branch (usually / (root) directory).

🌱 Future Ideas (Optional)

  • Improve styling/theming.
  • Add search functionality (if not already enabled by default).
  • Categorize walkthroughs more granularly.

This README provides a high-level overview. For detailed Quartz configuration, see the official Quartz documentation.