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.
Start here. This is the page that includes the files.
The naive include.
Now a prefix is added to whatever you send.
And now a suffix as well.