====== Express req.query Notes ====== Notes from **HeroCTF 2024** SampleHub **[WEB]**. Given this code snippet: process.chdir(path.join(__dirname, "samples")); app.get("/download/:file", (req, res) => { const file = path.basename(req.params.file); console.log(typeof req.query.filename); res.download(file, req.query.filename || "sample.png", (err) => { if (err) { res.status(404).send(`File "${file}" not found`); } }); }); req.query.filename (typeof) is string is request is something like: http://localhost:3000/download/whatever?filename=first But req.query.filename (typeof) is object is request is something like: http://localhost:3000/download/whatever?filename=first&filename=second We can also inject object properties like this: http://localhost:3000/download/.flag.txt?filename[root]=/&filename[dotfiles]=allow req.query.filename type will also be object with something like: filename[whatever]