Skip to content

Latest commit

 

History

History
49 lines (28 loc) · 2.23 KB

README.md

File metadata and controls

49 lines (28 loc) · 2.23 KB

NSNC

Challenge:

Enjoy some comics, just like the ones on not-snc.com... :crying:

Solution:

We're given a PNG with a comic:

A stick figure pushes a lawnmower and shares a terrible pun.

Looking closely at the two panes, we can see what appears to be a QR code on the left along with a stretched QR code, or similar matrix barcode, on the right. We can throw the image in an online tool and see the hidden information a little more clearly:

A modified version of our comic with two portions of a QR code visible.

We can see that the two panes make up a single QR code with the top two-thirds on the left and the bottom third, stretched and warped, on the right. We'll need to stitch them together to get our flag.

We can draw the final QR code out by hand on a 33x33 grid of pixels, to match a version 4 QR code like this. QRazyBox will help us do this quickly and accurately:

An online QR code editor.

We can play around with the format a bit to make sure it matches our sample. Low error correction and mask pattern 6 seem to be a match:

Configuring our QR code.

Now we just need to fill in the rest:

The final QR code.

Decoding our QR code gives us the following:

MJRXIZT3NZPWKZTGL52GKZLTL5RWC3TUL5RDGX3XGBZG4X3MNFVTGX3SMU2GYX3UGMZXG7I=

That looks like Base64. Let's try to decode it:

$ echo 'MJRXIZT3NZPWKZTGL52GKZLTL5RWC3TUL5RDGX3XGBZG4X3MNFVTGX3SMU2GYX3UGMZXG7I=' | base64 --decode
0W!5)/)/V
         t/C}F}4US}1Ma}W%

That certainly doesn't look right. But before we go through every pixel in the QR code again, let's try the Magic recipe in CyberChef:

Our decoded flag.

And there's our flag! It was Base32 all along: bctf{n_eff_tees_cant_b3_w0rn_lik3_re4l_t33s}.