Training/Beginner/Your First CTF Challenge
Beginner Track1 hour

Your First CTF Challenge

6 guided sections and curated resources to get you contest-ready.

Lesson Playbook

6 sections
1

CTF Challenge Types

CTF competitions typically have these categories:

Web - Exploit web applications

  • SQL injection, XSS, authentication bypass
  • Tools: Burp Suite, browser DevTools

Crypto - Break cryptographic systems

  • Weak encryption, encoding, classic ciphers
  • Tools: CyberChef, Python scripts

Forensics - Analyze files and data

  • File carving, steganography, memory analysis
  • Tools: binwalk, steghide, volatility

Reverse Engineering - Understand compiled programs

  • Disassembly, debugging, code analysis
  • Tools: Ghidra, IDA, GDB

Pwn/Binary Exploitation - Exploit program vulnerabilities

  • Buffer overflows, format strings, ROP
  • Tools: GDB, pwntools

Misc - Everything else

  • OSINT, trivia, programming puzzles
2

Walkthrough: Web Challenge

Let's solve a typical beginner web challenge step by step.

Challenge: Find the admin password

Step 1: Explore the site

  • View source code (Ctrl+U)
  • Check /robots.txt
  • Look at JavaScript files
  • Check cookies and local storage

Step 2: Test for common vulnerabilities

# Test for SQL injection in login
Username: admin' --
Password: anything

# Test for SQL injection (union)
Username: ' UNION SELECT 1,2,3 --
Username: ' OR '1'='1' --

# Test for authentication bypass
Username: admin
Password: ' OR '1'='1

# Check for directory traversal
/page?file=../../../etc/passwd
/image?path=....//....//etc/passwd

# Check for hidden parameters
Add ?debug=true, ?admin=1, ?source=1

Pro tip: Always check the page source first! Developers often leave comments, hidden fields, or debug information.

3

Walkthrough: Crypto Challenge

Let's solve a typical encoding/crypto challenge.

Challenge: Decode this message: "VGhlIGZsYWcgaXMgQ1RGe2Jhc2U2NF9pc19lYXN5fQ=="

Step 1: Identify the encoding

  • Ends with == padding → Base64!
  • Contains only A-Za-z0-9+/= → Confirms Base64

Step 2: Decode

# Method 1: Command line
echo "VGhlIGZsYWcgaXMgQ1RGe2Jhc2U2NF9pc19lYXN5fQ==" | base64 -d
# Output: The flag is CTF{base64_is_easy}

# Method 2: Python
import base64
msg = "VGhlIGZsYWcgaXMgQ1RGe2Jhc2U2NF9pc19lYXN5fQ=="
print(base64.b64decode(msg).decode())

# Method 3: CyberChef
# Paste into input → From Base64 recipe
4

Walkthrough: Forensics Challenge

Let's analyze a suspicious image file.

Challenge: This image contains a hidden message

Step 1: Basic analysis

# Check file type (don't trust extensions!)
file suspicious.jpg

# View metadata
exiftool suspicious.jpg

# Look for strings
strings suspicious.jpg | grep -i flag
strings -n 8 suspicious.jpg

# Check for appended data
binwalk suspicious.jpg

# If PNG - check for hidden chunks
pngcheck -v image.png

# Try steganography tools
steghide extract -sf image.jpg
zsteg image.png
stegsolve  # GUI tool

Pro tip: The 'file' command reads magic bytes, not extensions. A file named 'image.jpg' might actually be a ZIP archive!

5

The CTF Methodology

Follow this process for every challenge:

  1. Read carefully - The challenge description often contains hints
  2. Gather information - Use reconnaissance tools and techniques
  3. Identify the vulnerability/type - What kind of challenge is this?
  4. Research - Google the vulnerability, read about similar challenges
  5. Exploit - Try your attack
  6. Document - Write down what worked for future reference

Common mistakes beginners make:

  • Overcomplicating - Start simple, try obvious things first
  • Not reading the description - Hints are there for a reason
  • Giving up too early - CTF is about persistence
  • Not googling - Someone has probably seen something similar
6

Where to Practice

Build your skills on these platforms:

Beginner-Friendly:

  • picoCTF - Best for absolute beginners
  • OverTheWire Bandit - Linux fundamentals
  • TryHackMe - Guided rooms with hints

Intermediate:

  • HackTheBox - Retired machines
  • CTFtime - Real competitions
  • Root-Me - Various categories

Tips for improvement:

  1. Solve challenges slightly above your level
  2. Read writeups AFTER attempting (learn from others)
  3. Build a notes system (Notion, Obsidian)
  4. Join Discord communities
  5. Participate in live CTFs - time pressure teaches efficiency

Pro tip: Set a timer for 30-60 minutes per challenge. If stuck, take a break or read a hint. Don't spend hours on one problem when starting out.

Further Resources

3 links
← Back to Beginner pathNetwork Fundamentals