
Una raccolta completa di 12 sfide di sfruttamento web containerizzate che coprono CVE-2023-25690, bypass WebAuthn, smuggling HTTP/3 e catene avanzate di XSS/RCE
"Non viaggio su strade consolidate, ma salto liberamente attraverso il vuoto. Se mi impacchetti male, consegnerò un segreto alla porta sbagliata."
La sfida presenta un'applicazione HTTP/3 (QUIC) stratificata su UDP. Poiché UDP è senza stato e il proxy non impone confini di richiesta HTTP rigorosi come TCP, è possibile desincronizzare il proxy e il server backend. Un attaccante può intrufolare una richiesta HTTP nascosta all'interno di un'altra richiesta.
Note - la lunghezza massima del messaggio è 1024 byte, solo le richieste GET funzionano davvero, e i messaggi vengono scartati dopo 10 secondi
Bersaglio: byuctf.xyz:40011
In questa implementazione specifica, un middleware Python (udp_server.py) ascolta sulla porta 40000 per il testo in arrivo. Questo server inoltra le richieste una volta trovato \r\n\r\n al server web reale. Poiché si tratta di UDP, c'è un'alta probabilità di consegna parziale dei pacchetti, portando a desincronizzazione se più richieste vengono inviate rapidamente o se i confini dei pacchetti vengono manipolati.
Per risolvere questa sfida, devi tenere conto della natura inaffidabile di UDP e del modo specifico in cui il middleware gestisce i confini delle richieste.
/ rivela un suggerimento sull'instabilità della connessione Nether./endpoints.txt per trovare una lista di 200 possibili endpoint nascosti.solve.py) per inviare richieste HTTP grezze su UDP al target. Lo script deve iterare sugli endpoint e richiedere ripetutamente ciascuno fino a ricevere una risposta completa (contenente un corpo).CH4KR4X2{P0D5_bl0ckch41n_br34ch}
Questa sfida esegue un server Flask sulla porta 1337 e udp_server.py sulla porta 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