Vey.ie

Eoin Davey.
- MSc. Mathematics @ Universiteit van Amsterdam.
- Former SRE @ Google.
- Éireannach.

HackMIT 2019 Entry Challenge

HackMIT is an annual hackathon held in MIT. It is one of the largest hackathon events in North America.

Admission to the event is usually by a random lottery, but, every year there is a secret series of puzzles that guarantees admission to the first 50 people to solve it.

The puzzles are intended to test the players problem solving skills and computer science knowledge.

The code for my solutions can be found on Github.

Finding the puzzles

The entry puzzles are a “secret”, Part of the intended challenge is finding your way to the puzzle dashboard.

Looking into the FAQ’s of hackmit.org we find this.

FAQ

curl is a tool to download files from the web, but if we run that command to download hackmit.org/puzzle.html we are greeted with

Spiderman

After our initial confusion we can navigate back to the FAQ page and look at the source code of the site, we find that there is a hidden element of the site with a bash script.

If we take the leap and execute this code we get this output.

h4cking ####################### (100%)
hacking complete >:} JK the puzzle is here: gauntlet.hackvengers.dev
──────────────▐█████───────
──────▄▄████████████▄──────
────▄██▀▀────▐███▐████▄────
──▄██▀───────███▌▐██─▀██▄──
─▐██────────▐███─▐██───██▌─
─██▌────────███▌─▐██───▐██─
▐██────────▐███──▐██────██▌
██▌────────███▌──▐██────▐██
██▌───────▐███───▐██────▐██
██▌───────███▌──▄─▀█────▐██
██▌──────▐████████▄─────▐██
██▌──────█████████▀─────▐██
▐██─────▐██▌────▀─▄█────██▌
─██▌────███─────▄███───▐██─
─▐██▄──▐██▌───────────▄██▌─
──▀███─███─────────▄▄███▀──
──────▐██▌─▀█████████▀▀────
──────███──────────────────

So our real URL is gauntlet.hackvengers.dev

The Dashboard

Going to gauntlet.hackvengers.dev brings us to a site that looks like this

Splash 1

If you’re familiar with The Avengers movie series you’ll recognise the infinity gauntlet and a tesseract. In this case called a guesseract.

Without going into movie lore, we can see there are six slots in the infinity gauntlet, and that slot number one is clickable. This is our link to the first puzzle.

The Puzzles

Now that we have access to the puzzles the real fun starts. Each puzzle requires a bit of work, they are roughly in difficulty order.

I have written a summary of each puzzle here, with a link to a full detailed solution

Hulk SMASH

Hulk SMASH is the first puzzle, we are brought to a website that looks like this

Puzzle 1

We need to break through the wall. Clicking on a single pixel of the wall reveals what’s behind it.

The secret to this puzzle is that the code running on the site has a hidden variable, finding and setting this variable to true allows you to reveal massive circles of the page at a time. Giving you this revealed message

All text revealed

There is our answer photos photos within, typing this into the guesseract brings us to the next puzzle.

Full Solution to Hulk SMASH here

I Love Ironman

Puzzle 2 brings us to this beautiful website

Puzzle 2 site

This site has a lot of hidden HTML elements at the bottom of the page, over 700,000 characters of it.

A cryptic sounding clue at the end of the page hints at what we need to do

I bet Jarvis was just a bunch of IF statements strung together
Honestly if we could just untangle the internal workings we can find small bits of information
Like one character words?

Printing each single character long HTML text element in in-order traversal prints out

Thatwaseasy?Hereistheanswer.WithSPACES!ALLLOWERCAS flynn while moving }E{ So that’s our answer, flynn while moving

Full Solution to I love Ironman here

Hackcrostic

This puzzle was like a classic cryptic crossword puzzle, with a very significant twist. We are presented with 26 clues and 16*16 grid.

Puzzle 3

Solving all 26 cryptic clues fills in the board like this.

Puzzle 3 full grid

Hidden in the code for the puzzle site you can find a mapping from letters to colours, if you colour in each square the colour of it’s letter you get this image of an Ironman arc-reactor. Adding /arcreactor your URL gives the solution to the puzzle.

Puzzle 3 full grid

Full Solution to Hackcrostic here

Infinity Phones

The infinity phones puzzle provides 3 audio recordings of phone calls. The solution is hidden in these calls.

Using audio analysis and some logic about area codes allows you to generate the phone number of Idaho geology department, calling this number brings you to a robotic answering machine that tells you the answer to this puzzle. I really enjoyed the real world integration of this puzzle, my favorite by far.

Full Solution to Infinity Phones here

Snap!

The fifth puzzle provides us with 760 images. We are told that these images can be put back together into one larger image.

Puzzle 5 shards

This problem is very practical, piecing the image back together by any means provides the solution to the puzzle, it’s contained in text in the image.

Using a smart algorithm to piece together images by finding matching edges we can automatically piece back together sections of the image like this

Puzzle 5 row 1

You can see in that image the bottom of one our words prior

Full Solution to Snap! here

Partition

The last obstacle to solve is called partition. It’s a very complex machine learning puzzle. Here is the puzzle description

Researchers at Stark Industries have developed a new state-of-the-art machine learning model to detect dangerous objects on our planet. These objects may appear harmless on the surface, but could be a significant threat to the Avengers!
The researchers must evaluate the model before the Avengers can begin eliminating identified threats! However, in an underwhelming use of its power, Thanos has used the reality stone to merge the testing and training sets, and the researchers have no idea how to separate them! Can you help them out?.

The website provides us with an interface to get retrieve images and their predicted threat levels

Puzzle 6 display

To solve this problem we need to identify 1000 images, at least 850 of which are in the training set of this model.

To do this we have to do a lot of things, including piecing apart the site’s JavaScript, finding the original dataset, training our own model, simulating the environment locally and then using that local environment to train a new machine learning model to identify training set images from test set images.

I would recommend reading the full solution, as I think it’s the most novel of all of the puzzles.

Full Solution to Partition here