The application
Start here. This is the page that includes the files.
Find the parameter that names a file, then walk upwards until the application stops you - and work out why it stopped you.
Anywhere a filename or a path reaches the filesystem, the question is whether you can steer it. Include a local file, include a remote one, or upload something the server is willing to execute - all three come from the same trust mistake.
The filesystem these read is not this server’s. Every path resolves inside a small invented Linux box that ships with the labs, so the payloads are the real ones and the files that come back are planted - including a few worth finding. Your traversal is not failing; you are reading someone else’s machine.
Start here. This is the page that includes the files.
The naive read. No filter at all.
A filter strips the slashes out of your path. It has an off switch.
The same filter, plus a blocklist for the filename it expects.