Another year, another SANS Holiday Hack. It’s one of my favorite parts of the holidays. The music alone is worth it.
It’s a bit different this year because the game is split into 4 parts that come out every week or so, up into December. The following is just the prologue.
Angel has the first challenge, Elf Connect. She says the point of the game is to match groups of four words to categories to win four rounds, but randomElf suspiciously has a high score of 50,000 points.
I’m going to try and solve it the normal way before I investigate what randomElf has been up to.
As you can see, you only get 400 points per round for a 1600 final score, so 50,000 seems very sketch.
I started by opening the challenge in its own window so I didn’t have to deal with the iframe stuff.
Looking through the source code of the game, you can see that the score is stored in sessionStorage, and you can modify it directly.
The simplest way to do that is to enter the following command in the console.
After that, I matched one line of words and the high score automatically updated (if you only refresh the page it will reset).
The next challenge is another browser game from Poinsettia.
Poinsettia mentions issues with the springs. In the game they serve to bounce the elf forward for a quicker time.
I played through a few levels normally until I got to Crate Caper and noticed you could skip around by using the browser navigation bar. I saw that the final level was named “A Real Pickle”, so I skipped forward to that.
That’s when I started trying to manipulate the game, because I was getting stuck trying to solve it normally.
So “game.entities” holds a list of entities defined by position (x, y) and then type. You can see the types defined here:
You can see all these entities on your current game level like this:
I removed all of the blockers that were blocking my way (type 3).
Which turned the map from this:
To this:
However, that ended up throwing an error message as I crossed the finish line, so I was back to the drawing board.
Poinsettia did mention the springs. So I started messing with those back on the Crate Caper level where I initially got stuck. I tried turning all blocks into springs.
This popped up in the console, so I thought I was on the right track…
But at the end it just created another error.
At this point I had finally figured out Crate Caper and Shore Minder the legit way with the use of portals.
A Real Pickle was the last level to beat. I got a pop-up that said you can’t beat it “with our current tools”. So cheesing it is the intended solution.
I went through the code again and saw a comment that explains how to get into an edit mode.
I changed my URL and added ?edit=true to it, which gave me the editor console.
I changed the board around like this:
However, none of this saves when you are done editing because when you switch back to the live game everything just gets reset.
AGAIN, back to drawing board…
Earlier I found that putting two springs side-by-side makes the elf bounce around the board and land places unexpectedly.
The problem was that I could only use two springs in total and couldn’t get to all the crates/flag like that.
After I finally found the local storage and learned that you could actually edit the entities in there directly, I saw that you could have more than two springs this way, solving my issue.
And not only can you add more than two springs, you can also place them into areas that you otherwise couldn’t normally. Like very close to the blockers.
This was my winning game board:
{“segments”:[[[1,1],[2,1]],[[1,7],[2,7]],[[2,7],[3,7]],[[11,9],[11,8]],[[8,7],[9,7]],[[9,7],[10,7]],[[3,7],[3,6]],[[3,6],[3,5]],[[3,5],[4,5]],[[4,5],[5,5]],[[5,5],[5,4]],[[5,4],[5,3]],[[6,5],[7,5]],[[7,5],[7,6]],[[7,6],[7,7]],[[7,7],[8,7]],[[9,1],[9,2]],[[9,2],[9,3]]],”entities”:[[2,1,7],[10,7,7],[1,7,6],[9,7,7],[9,3,6]]}
As the elf moves, you will have to click on and change the direction of the paths to direct it. If not he will always jump back to the start.
These are the path changes I made to guide him:
That’s it for The Prologue. See you in Act 1!
❤