NeSE三月升级赛WriteUp (Web)
又是一个XSS题,Docker里起了一个Web一个Bot一个Redis,Web使用Java写的,用的Eclipse的Jetty服务器,上层是Micronaut微服务框架来的,整体打包成一个JAR。 附件地址:CTF-Chal/fancy-notes.zip (github.com) 一开始还以为是Java相关的漏洞,随手看了下反编译,发现好像除了题目是Java写的之外和Java没啥关系,同理Redis也只是个用来传数据的中间媒介,似乎也利用不了什么漏洞。于是继续关注题目本身的逻辑。 先看Bot做了啥: const puppeteer = require("puppeteer"); const Redis = require('ioredis'); const connection = new Redis(6379, process.env.REDIS_HOST ?? "127.0.0.1"); const browser_option = { headless: true, args: [ '--no-sandbox', '--disable-gpu', '--js-flags="--noexpose_wasm --jitless"', ], executablePath: "google-chrome-stable" }; const MAIN_SITE = process.env.MAIN_SITE ?? "http://127.0.0.1:8000" const FLAG = process.env.FLAG ?? "flag{test}" const sleep = (delay) => { return new Promise((resolve) => setTimeout(resolve, delay)) } async function browse(url) { console.log(`[+] browsing ${url} started`) const browser = await puppeteer....