Foreword
Second CTF from NUS Greyhats. Initially I do not have any intention of writing writeups as the time for the CTF is only a day, so the following writeups are based on my recollection of the event. The web challenges done are gone, as there is no file stored.
Challenges
AmongUs

This is a challenge involving image steganography. Not so difficult if you know the proper tooling for the challenge. AperiSolve should give a full overview of the file and make it trivial to solve this challenge.
A good list to consider for steganography challenges is this list of useful tools and resources for steganography by 0xRick. Hacktricks also provides a great list of tools to try out.
I did not know AperiSolve
beforehand, so solving this was a bit painful. After a bit of fiddling with zsteg
and other tooling for image steganography on Kali Linux
, I encountered the first tool needed for the challenge: foremost. binwalk
achieves the same - but the output is a bit messy. After running foremost
on the image given, we obtain the following output:
|
|
The tool has found another image inside the original image. This image somewhat fits the title of the challenge.

Again, after a while of messing with image stegano tools, I eventually found out the solution of the problem. Looking at the Red channel of the image, we should be able see a hidden message - the flag of the challenge.

B

A interesting challenge. We were provided with a GIF
of Nicholas Cage suffering from bees. Title of the challenge is also B
- so something has to do with the letter B. Only the GIF
is provided, hence this challenge should be a steganography challenge.
Using the steganography tools for GIF
does not return any usable data. But, when we look at the end of the output from the hexdump
of the GIF
, we can see something promising
|
|
Seems like the letter B
(with hex value 42
), and the character .
(with hex value bb
) is alternating back and forth in the last bytes of the GIF
. This may suggest a binary string. A supposition we may have is that the character .
may represent the value 1
and the character B
may represent the value 0
in a binary string. If this does not provide any promising data, then we flip the value that each character represents.
Hence, from the above supposition, we obtain the following binary string:
|
|
Putting this to CyberChef, we luckily found something meaningful - the flag itself.

Canon In D
A misc challenge involving high-school level physics. We are tasked to solve the problem of free falling in 3D space of a object launched at a speed and orientation given by the server.
The only observation to solve the challenge is the fact that there is no forces acting on the cannonball other than gravity, hence the velocity in the x
and z
axis is the same. We can treat the velocity in the y
axis as a normal 1D problem of an object pulled by a force. Then it is just a matter of NOT messing up the signs of the velocity equations - very tricky without a solid understanding of Physics.
Solution Implementation
|
|
Disney Endgame
A simple challenge. Running diff
should give us the flag. The combined difference of the two files should yield the flag.
|
|
It is too tedious to extract out the flag from eyeballing the diff
logs, so a Python script is used.
|
|
Grains

A static-like image is given in the challenge. There is no information using AperiSolve
and binwalk
, or some image steganography techniques sometimes used in CTF like LSB steganography.
I did not solve this and only know the solution from looking at the chats of WelcomeCTF. This is a stereogram - commonly used for visual effect by deceiving the eye into thinking there is a 3D object created from overlaying two random pieces of colored pages.
The tool to solve this is magiceye. Dragging the image around a bit and we should be able to see the flag.

Multitrack Drifting
We are given a soundtrack of the famous Yakuza 0
game. Only the soundtrack is given, and with a file with the extension of .aup
. Looking up the program associated with the file shows the result of Audacity.
Putting the given .aup
file to Audacity and open the spectrogram, then configuring the color and the timescale of the software, we should be able to see the text representation of the flag.

Single
From the looks of the file given, we can immediately see this is a substitution cipher. A frequency analysis attack can be employed, using common letters, bigrams and trigrams from the English language.
There are tools online to automate this task. One such tool is at this link. Putting the content of single.txt
into the website should return the flag at the end of the file.
Triple
We notice that the size of the three files given 1
, 2
, 3
and flag.pptx
is the same. And since the challenge is in the crypto
category, a guess for how we can solve this challenge is through the use of xor
-ing the files given.
A Python script can be written to xor
the files, but I was too lazy to do so. Hence, I found xor-files, a tool for XOR
for two or more files and get the result on a pipe.
We will XOR
the files that is given by the challenge, and the output after redirecting to a file and calling the command file
on the resultant file should tell us that it is a PowerPoint 2007+ file.
