2024寒假训练赛2——Writeup
WEB 窥视 一个简单的论坛系统 核心的api有 登录 POST /auth/login 注册 POST /auth/register 创建/回复帖子 POST /forum/post 审了一圈代码,唯一可操作的地方应该就是创建帖子(POST /forum/post)那一块了,这里有个文件图片上传 ValidationMiddleware("post", "/forum"), async function (req, res) { const { title, message, parentId, ...convertParams } = req.body; ... let attachedImage = null; if (req.files && req.files.image) { const fileName = randomBytes(16).toString("hex"); const filePath = path.join(__dirname, "..", "uploads", fileName); try { const processedImage = await convert({ ...convertParams, srcData: req.files.image.data, format: "AVIF", }); await fs.writeFile(filePath, processedImage); attachedImage = `/uploads/${fileName}`; } catch (error) { req.flashError("There was an issue processing your image, please try again."); console.error("Error occured while processing image:", error); return res.redirect("/forum"); } } ... } 随便进到一篇文章里po一张图片上去,结合POST表单和代码可以看出来,除了title, message, parentId三个参数外,其他参数都被写到convertParams里了, const processedImage = await convert负责用convertParams里的参数对图片进行一个转换。 ...