LA CTF 2025 Writeups

LA CTF 2025 Writeups

I won 5th place in LA CTF 2025 with my team. I found a handful of the challenges I solved pretty cool so I wrote up my solutions and process for them

Prologue

This was my favorite challenge from this event by far. The challenge only gave us a link to a Scratch project with the description “You can do this.”

After opening the project and clicking play, I could see what appeared to be a platformer game that very clearly resembled the intro level of Celeste (also titled Prologue)

read more →

Srdnlen CTF 2025

Srdnlen CTF 2025

This past weekend I competed in the srdnlen CTF with my team L3ak. There were a handful of challenges that I found fun enough to warrant a writeup, so here goes

Cheese with Friends

Cheese with Friends tells the story of what I can only assume was an LLM’s imagined experiences with Casu Martzu, a particularly gross variety of cheese from Sardinia, the home region of the team hosting this CTF.

read more →

Simplifying MBA Expressions to Solve a CTF

Simplifying MBA Expressions to Solve a CTF

Last weekend my team and I competed in UofTCTF 2025, where we placed 9th overall. I found one of the reversing challenges really interesting, and I was proud of my solution and solve process, so I made a writeup for it.

Bloatware

For this challenge we’re given a flag checker program, chal.js. Upon opening it I quickly saw that it was obfuscated with obfuscator.io and then minified. Here’s a small snippet of the code in question.

read more →

Huntress CTF 2024 Writeups

Huntress CTF 2024 Writeups

This October, Huntress ran a month-long CTF with challenges releasing every day. It was a team event, but participated solo. I ended up in overall 7th place.

I wrote up my solutions to a small selection of my favorites.

Base-p-

Here we’re given a file called based.txt that contains the following content

楈繳籁萰杁癣怯蘲詶歴蝕絪敪ꕘ橃鹲𠁢腂𔕃饋𓁯𒁊鹓湵蝱硦楬驪腉繓鵃舱𒅡繃絎罅陰罌繖𔕱蝔浃虄眵虂𒄰𓉋詘襰ꅥ破ꌴ顂𔑫硳蕈訶𒀹饡鵄腦蔷樸𠁺襐浸椱欱蹌ꍣ鱙癅腏葧𔕇鱋鱸𓁮聊聍ꄸꈴ陉𔕁框ꅔ𔕩𔕃驂虪祑𓅁聨朸聣摸眲葮𖠳鵺穭𒁭豍摮饱恕𓉮詔葉鰸葭楷洳面𔕃𔑒踳𔐸杅𐙥湳橹驳陪楴氹橬𓄱蝔晏稸ꄸ防癓ꉁ𖡩鵱聲ꍆ稸鬶魚𓉯艭𔕬輷茳筋𔑭湰𓄲怸艈恧襺陷项譶ꍑ衮汮蹆杗筌蹙怰晘缸睰脹蹃鹬ꕓ脶湏赑魶繡罢𒉁荶腳ꌳ蕔𔐶橊欹𖥇繋赡𐙂饎罒鵡𒉮腙ꍮ楑恤魌虢昹𒅶效楙衎𔕙ꉨ𓈸𔑭樯筶筚絮𓁗浈豱ꉕ魔魧蕕聘筣鹖樫ꍖ汸湖萰腪轪𓉱艱絍笹艨魚詇腁𒁮陴顮虂癁

Given the name of the challenge and from previous experience, I deduced that this was base65536 encoded data. Using an online tool I decoded the data to get the following.

read more →

Reverse Engineering Pokémon GO

Reverse Engineering Pokémon GO

Since last summer, my main hobby project has been developing my reverse engineering skills by tearing apart Pokémon GO and seeing what I could learn. I’ve played this game since it was released in 2016 (when I was 11), and it’s been a fairly major part of my life since then.

Last July I started by setting up a fairly basic PoGo map, as I described in an earlier blog post. This didn’t require any real technical skill on my part, because it was mostly setting up and running software that other people had already built. I wasn’t satisfied with this, and after I got my map running, I began exploring the game myself, and I found lots of interesting stuff.

read more →

An Explanation of the Pokemon GO Guaranteed Lucky Trade Mechanic

An Explanation of the Pokemon GO Guaranteed Lucky Trade Mechanic

Since the introduction of lucky trades in Pokemon GO, there has been an obscure mechanic known as “Guaranteed Lucky Trades” that not many people understand. This is different from “Lucky Friends”, and the game gives no indication ahead of time as to whether or not a trade will be a Guaranteed Lucky Trade (GLT).

In a recent blog post, Niantic announced that they were increasing the GLT cap from 15 to 25, which caused the feature to gain some more attention, and at the same time more confusion.

read more →

WiCyS CTF 2023

WiCyS CTF 2023

This weekend I participated in the 2023 RIT Women in Cybersecurity CTF challenge. Overall it was pretty fun, and I ended up coming in first place, winning the grand prize of a new wireless mechanical keyboard 😎. There were a lot of challenges, some good and some less good, but I picked five of my favorites to share.

Intergalactic Disco Octopus Rave

This was the first challenge I looked at. It ended up being really easy, but I found it enjoyable and silly regardless.

read more →