OOO archive --- DEF CON CTF [ login ]

dc2020f - casinooo-life reversing pwn finals

by tricke

This was a King-of-the-Hill challenge, part of dc2020f.

Points: 1,000

Description

sports

This challenge was part of the finals

During finals, scoring happens per-round based on attack (steal flags from others) and defense (patch the service to prevent others from pwning you) points. Patching is not currently simulated on the archive, but keep in mind that most services only allowed a limited amount of bytes to be changed from the original binary. Scoring rules for 2019 2020 2021.

King of the Hill points are also awarded per-round, with only the top-ranking teams getting points.

Teams were informed of game events, with redacted info on the last day. In 2019 players could see traffic pcaps only after some time, in 2020 and 2021 they had the choice the stealth their traffic or not (for half the points).

Have you always wanted to be a professional gambler? Are you ready to enjoy the easy casinooo life? Come and play our hot new blackjack game. We are the only casino around that will let you 'play it YOUR way' with your own blackjack bot. You have chance to beat the house and WIN IT ALL. For a safer experience, play at home with your own dealer (be sure you still tip them). Please see your interface for details. Some limitations apply. All dealer decisions final. If you have a gambling problem, please get help.

Below are the steps you can use to run the challenge on your own computer.


A built image is available at Docker Hub:
docker pull tricke/dc2020f-casinooo-life-blackjack


Create a folder on your local machine in /tmp/inputs.


The patterns in /tmp/inputs are for the team's controller. The files must follow the format laas-bj-teams-controller-{TEAMID}.mc, where TEAMID starts at 1 and increments from there.
Thus, you to start, you can use something like:
cp bjgame/src/laas-bj-teams-controller-1.mc /tmp/inputs/laas-bj-teams-controller-1.mc
cp bjgame/src/laas-bj-teams-controller-1.mc /tmp/inputs/laas-bj-teams-controller-2.mc
cp bjgame/src/laas-bj-teams-controller-1.mc /tmp/inputs/laas-bj-teams-controller-3.mc


Next, use docker run and mount a volume at /tmp/inputs using -v:
docker run -it --rm -v /tmp/inputs:/tmp/inputs --name casinooo casinooo


At this point the container should be up and running. You can update the patterns located at /tmp/inputs and the changes will be picked up either at the next round (or immediately if using the CRC reboot).


You can look at the files locally using
docker exec -it casinooo /bin/bash


You can look at the blackjack visualization on port 80 of the container.

Hints

None yet :(
If you wish, you can contribute some.

Source

Spoilers ahead! Code for this challenge is publicly available. The container is in bjgame/ -- that was the central server during the finals.