My (cooler) authored challs

blahaj-2023/christmas

The stack contains an array of heap pointers, as well as a const limit variable that appears to decompilers, like IDA, as a primitive value, due to the const marker. A negative OOB write from the array can overwrite this limit, which then grants us positive OOB read/write, which we can use to do leaks, double free, and RCE.

Submit

hacktm-2023/blog

Using PHP deserialization, we craft an object that when extracted, exploits the provided SQLite database interface to create a new SQLite database file. This file contains our PHP webshell hence leading to RCE.

Submit

lnc-2025/feedback-form

Exploit a UAF in usage of cJSON library, and exploit the cJSON object struct (with a bit of unsorted chunk feng shui) to get heap leak, libc leak via an arbitrary read in valuestring, arbitrary free via the child pointer pointing to a fake object, and finally, RCE via House of Apple. Writeup here!

Submit

sieberr-2025/mutuple

Turn a simple primitive, OOB write from a tuple’s backing buffer, into a fakeobj primitive, and with the help of bytestrings construct a fake type to forge the fake object’s vtable and get shell. Writeup here!

Submit

blahaj-2025/money

The challenge moves an object and replaces it with a locked object, rendering the object unusable. We exploit the negative size of ob_size in longs, allowing for negative OOB. The negative OOB allows us to modify the copy size of the attacker object, which causes us to read out-of-bounds from the original attacker object and overwrite into another lock object’s buffer, eventually leading to fakeobj primitive. Writeup here!

Submit