There were three posters around the room that the competition was being held in. Each poster had a QR code on it with some parts missing (We were later sent the original files, which will be used in the writeup as they are better quality).

QR Code 1:

QR Code

QR Code 2:

QR Code 2

QR Code 3:

QR Code 3

Luckily, upon scanning the first QR code, the scanner I was using was able to decode it without us having to fix the code. It decodes, and gives us the flag: flag{qr-codes-are-cool\!}.

Looking at a diagram of QR codes, we can see that the vast majority of parts that codes 2 and 3 are missing seems to be to do with the orientation.

QR Diagram

The missing portion on the lower right hand side of each code is only actually half a square of each of the surrounding squares. We can easily fill in these, along with the orientation marks.

I used an online pixel editor to do this manually.

After I had done this, this then leaves us with Code 2 as:

Fixed QR Code 2

and Code 3 as:

Fixed QR Code 3

By trying a variety of different scanners, we eventually get these to scan, giving us the flags: flag{sometimes-things-are-more-predictable-than-you-think} for code 2 and flag{black-on-white-or-white-on-black?} for 3.