web
jey is not my son

Find the year the flag was created, that’s the answer you seek. But beware: Jey is not not my son.
tldr;
The vulnerable piece of code is this line.
Our input with name and year is inserted into a code string (the DSL program) with no escaping. So the workaround this is terminate with the
"...", close thefilter(, and inject arbitrary query operators/pipelines. Our injection comes after that is the real exploit.
The fomula for it is going to be
flag"→ closes the"...string.)→ closes the originalfilter(call, so it becomesfilter(.Name == "flag").| map({Count: <PREDICATE>})→ payload pipeline; decide what number gets printed.| filter(.Name not in [] or .Name == "→ opens a new filter and leaves a string open to catch the remainder.
And build on that logic and plus the predicate of guessing character by character, we ultimately got the solve.
solve.py
FortID{B3_th3_0n3_wh0_1s_n0t_b1ind_1n_th3_n3w_3r4}
upload docs

We’ve come across a rather unusual solution for uploading documentation, and I’ve noticed several odd things about it.
Here’s what I know so far:
There’s an
/admin?target_user={user_id}endpoint that simulates what an admin would see on the site. From there, the admin can viewtarget_userthe links. There’s also a/get_flagendpoint, which appears to work only within the local network.Local port is 5000.
tldr;
Notes: From the page sources we observed that the application always includes (after you de-obfuscate the code with https://deobfuscate.io/). /static/js/effect.js with window.stateObject["static/js/effect.js"].href without validation. And that is pretty much the vulnerability

solve.sh

FortID{50m371m35_15_b3773r_70_n07_v1b3_c0d3_4nd_0buf5c473}
Last updated