A simple photo gallery app. Each challenge exposes the same feature ("view a file from the gallery") with a different level of protection.
sunset.jpg
mountains.jpg
lighthouse.jpgThe viewer takes a file parameter and reads it straight off disk.
No filtering, no allowlist, nothing.
This viewer strips ../ from the input before using it โ
but only once, and only that literal string.
This one doesn't read local files by path at all โ it include()s
whatever page points to, local or remote.