Unique team tokens will be provided to each team prior to range open (example token: 5cfefcf8549395ac3aa5a6322cbb5b8a). These tokens are used to authenticate credential downloads, flag submssions, and name changes.
Once the range opens, the API endpoint http://187.127.71.238:8000/teamdata/{team_token}/rangedata.zip will open. The downloaded zip will contain all your team's WireGuard VPN files, in addition to a creds.txt file which contains the credentials to each of your team's vulnboxes.
Each service is hosted on its own vulnbox on the 10.100.0.0/15 network. Each team is assigned a /24 subnet, with the third octet corresponding to their team ID. Therefore, the IP for each vulnbox takes the form of 10.100.T.S, where T is the team ID and S is the service ID.
All traffic is source NATed through the VPN server (10.101.0.1), including checker traffic.
All vulnboxes are running Alpine Linux. Any service source code is stored in /service. Services are usually run inside docker containers on the vulnboxes.
Flag regex: [A-Z0-9]{31}=
Example flag:
XFWEC8CI1OP1DNBD8CJNUB22VIQ22T2=
FlagIDs: (Vary per service. Usually usernames or user IDs associated with the service).
The scoreboard is accessible at http://187.127.71.238
API is hosted at http://187.127.71.238:8000 from outside the range, or http://10.101.0.2:80 from inside the range. Full OpenAPI documentation is at /docs.
To submit flags POST /steal with URL parameters token and flag. Below is an example curl command:
curl -X POST "http://187.127.71.238:8000/steal?token=<token>&flag=<flag>"
To change your team name on the scoreboard, POST /rename with URL parameters token and name. Name changes will only apply to future ticks. Below is an example curl command:
curl -X POST "http://187.127.71.238:8000/rename?token=<token>&name=<name>"
To get a list of targets, GET /hosts. Example response:
[
{
"service_name": "simple",
"service_id": 1,
"team_id": 1,
"ip": "10.100.1.1"
},
{
"service_name": "simple",
"service_id": 1,
"team_id": 2,
"ip": "10.100.2.1"
},
{
"service_name": "SeaOfHackerz",
"service_id": 2,
"team_id": 1,
"ip": "10.100.1.2"
},
{
"service_name": "SeaOfHackerz",
"service_id": 2,
"team_id": 2,
"ip": "10.100.2.2"
}
]
To get a list of active Flag IDs, GET /flagids. Example response:
[
{
"service": "simple",
"service_id": 1,
"team_id": 1,
"tick": 66392,
"flag_id": "2jitycpb2euu3m8v"
},
{
"service": "simple",
"service_id": 1,
"team_id": 1,
"tick": 66393,
"flag_id": "le4esae1gsp3fpqy"
},
{
"service": "simple",
"service_id": 1,
"team_id": 2,
"tick": 66392,
"flag_id": "rajafpy4mlajeguz"
},
{
"service": "simple",
"service_id": 1,
"team_id": 2,
"tick": 66393,
"flag_id": "s3ykbpm4mca3qu6a"
},
{
"service": "SeaOfHackerz",
"service_id": 2,
"team_id": 1,
"tick": 66392,
"flag_id": "{'userId': 1153}"
},
{
"service": "SeaOfHackerz",
"service_id": 2,
"team_id": 1,
"tick": 66393,
"flag_id": "{'userId': 1154}"
},
{
"service": "SeaOfHackerz",
"service_id": 2,
"team_id": 2,
"tick": 66392,
"flag_id": "{'userId': 1143}"
},
{
"service": "SeaOfHackerz",
"service_id": 2,
"team_id": 2,
"tick": 66393,
"flag_id": "{'userId': 1144}"
}
]