
A comprehensive collection of 12 containerized web exploitation challenges covering CVE-2023-25690, WebAuthn bypasses, HTTP/3 smuggling, and advanced XSS/RCE chains
"I travel not on established roads but leap freely across the void. Package me wrong, and I'll deliver a secret to the wrong doorstep."
The challenge features an HTTP/3 (QUIC) application layered over UDP. Because UDP is stateless and the proxy doesn't enforce strict HTTP request boundaries similar to TCP, it is possible to desynchronize the proxy and the backend server. An attacker can smuggle a hidden HTTP request within another request.
Notes - max message length is 1024 bytes, only GET requests will really work, and messages are discarded after 10 seconds
Target: byuctf.xyz:40011
In this specific implementation, a Python middleware (udp_server.py) listens on port 40000 for incoming text. This server forwards requests once a \r\n\r\n is found to the actual web server. Because this is UDP, there is a high chance of partial packet delivery, leading to desynchronization if multiple requests are sent rapidly or if the packet boundaries are manipulated.
To solve this challenge, you must account for the unreliable nature of UDP and the specific way the middleware handles request boundaries.
/ endpoint reveals a hint about the Nether connection instability./endpoints.txt to find a list of 200 possible hidden endpoints.solve.py) to send raw HTTP requests over UDP to the target. The script must iterate through the endpoints and repeatedly request each one until a full response (containing a body) is received.CH4KR4X2{P0D5_bl0ckch41n_br34ch}
This challenge runs a Flask server on port 1337 and udp_server.py on port 40000.
Build:
sudo docker build -t huup .
sudo docker network create -d bridge huup
Run:
sudo docker run -p 40011:40000/udp --detach --name huup --network huup huup:latest