灵感笔记 100 3465 solves 你是一个自由撰稿人,使用"灵感笔记"云笔记工具。今天登录...
創建於:2026年5月10日
使用 GPT-5.5 Thinking 回答 Chat01
創建於:2026年5月10日
使用 GPT-5.5 Thinking 回答 Chat01
灵感笔记
100
3465 solves
你是一个自由撰稿人,使用"灵感笔记"云笔记工具。今天登录后,偶然发现这个笔记系统似乎有点问题...找到隐藏的Flag!
题目地址:39.105.213.28:5000
用户名:admin,密码:123456
目前没法直接拿到 Flag:我这边访问靶机时,39.105.213.28:5000 端口直接 Connection refused,不是登录失败、403 或 WAF 拦截。
我验证到的结果类似:
bashnc -vz -w 5 39.105.213.28 5000 # connect to 39.105.213.28 port 5000 failed: Connection refused curl -v --connect-timeout 5 http://39.105.213.28:5000/ # Failed to connect to 39.105.213.28 port 5000
这通常表示:
我不能凭空编一个 Flag。你可以先在本地浏览器确认能否打开该地址。如果能打开,可以优先按这个思路测:
pythonimport requests import re base = "http://39.105.213.28:5000" s = requests.Session() # 登录 r = s.post( base + "/login", data={"username": "admin", "password": "123456"}, allow_redirects=True ) print("login:", r.status_code, r.url) # 常见入口 paths = [ "/", "/robots.txt", "/flag", "/admin", "/notes", "/api/notes", "/api/note/1", "/user/1", "/profile", ] for p in paths: try: rr = s.get(base + p, timeout=5) text = rr.text[:300].replace("\n", " ") print(p, rr.status_code, text) m = re.search(r"flag\{.*?\}|ctf\{.*?\}", rr.text, re.I) if m: print("FOUND:", m.group()) break except Exception as e: print(p, e) # 笔记类题常见 IDOR:遍历 note id for i in range(1, 200): for tmpl in ["/note/{}", "/notes/{}", "/api/note/{}", "/api/notes/{}"]: url = base + tmpl.format(i) try: rr = s.get(url, timeout=3) if rr.status_code == 200: m = re.search(r"flag\{.*?\}|ctf\{.*?\}", rr.text, re.I) if m: print("FOUND at", url, m.group()) raise SystemExit except Exception: pass
这类“云笔记/隐藏 Flag”题高概率是登录后看接口、隐藏路由、笔记 ID 越权或前端 JS 泄露。把你本地能打开后的页面源码、登录后抓包响应或截图发来,我会继续帮你定位。
</body> </html>text<input type="hidden" id="is-admin" value="true"> <div class="header"> <h1>灵感笔记</h1> <div> <span>欢迎, admin</span> <a href="/settings">设置</a> <a href="/logout">退出</a> </div> </div> <div class="main"> <div class="sidebar"> <div class="sidebar-section"> <div class="sidebar-title">笔记</div> <a href="/dashboard" class="sidebar-item active"> <span class="sidebar-icon">📝</span> 全部笔记 <span class="sidebar-badge">2</span> </a> <div class="sidebar-item"> <span class="sidebar-icon">⭐</span> 收藏夹 <span class="sidebar-badge">0</span> </div> <div class="sidebar-item"> <span class="sidebar-icon">🕐</span> 最近修改 </div> </div> <div class="sidebar-section"> <div class="sidebar-title">文件夹</div> <div class="sidebar-item"> <span class="sidebar-icon">📁</span> 默认文件夹 <span class="sidebar-badge">2</span> </div> <div class="sidebar-item"> <span class="sidebar-icon">📁</span> 写作 </div> </div> <div class="sidebar-section"> <div class="sidebar-title">标签</div> <div class="sidebar-item"> <span class="sidebar-icon">🏷️</span> 随笔 </div> <div class="sidebar-item"> <span class="sidebar-icon">🏷️</span> 日记 </div> <div class="sidebar-item"> <span class="sidebar-icon">🏷️</span> 素材 </div> </div> <div class="sidebar-section"> <div class="sidebar-title">其他</div> <div class="sidebar-item"> <span class="sidebar-icon">🗑️</span> 回收站 </div> <a href="/feedback" class="sidebar-item"> <span class="sidebar-icon">📧</span> 联系作者 </a> </div> </div> <div class="content"> <div class="toolbar"> <div class="search-box"> <button>🔍</button> <input type="text" placeholder="搜索笔记..."> </div> <div class="toolbar-buttons"> <button class="btn-secondary">📥 导出</button> <button class="btn-secondary">📤 导入</button> <button class="btn-primary">+ 新建笔记</button> </div> </div> <div class="stats"> <div class="stat-card"> <div class="stat-number">2</div> <div class="stat-label">笔记总数</div> </div> <div class="stat-card"> <div class="stat-number">103</div> <div class="stat-label">总字数</div> </div> <div class="stat-card"> <div class="stat-number">2</div> <div class="stat-label">文件夹</div> </div> </div> <h2 style="margin-bottom: 20px; color: #333;">全部笔记</h2> <div class="notes"> <div class="project-card"> <h3>置顶笔记</h3> <p>一些很重要的笔记,永远不要删除</p> <div class="tags"> <span class="tag">重要</span> <span class="tag">秘密</span> </div> <div class="meta"> <span>📅 2024-01-15</span> <span>📝 35字</span> </div> <a href="/project/flag-project-001">查看详情</a> </div> <div class="project-card"> <h3>草稿箱</h3> <p>还没写完的文章和想法</p> <div class="tags"> <span class="tag">草稿</span> </div> <div class="meta"> <span>📅 2024-01-10</span> <span>📝 68字</span> </div> <a href="/project/admin-notes-002">查看详情</a> </div> </div> </div> </div> <div id="modal" style="display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:1000;"> <div style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:white;padding:30px;border-radius:10px;text-align:center;max-width:400px;"> <p id="modal-msg" style="font-size:16px;color:#333;margin-bottom:20px;"></p> <button onclick="document.getElementById('modal').style.display='none'" style="background:#56ab2f;color:white;border:none;padding:10px 30px;border-radius:5px;cursor:pointer;">确定</button> </div> </div> <script> function showModal(msg) { document.getElementById('modal-msg').textContent = msg; document.getElementById('modal').style.display = 'block'; } document.querySelector('.search-box button').addEventListener('click', function() { var keyword = document.querySelector('.search-box input').value; if (keyword) { showModal('搜索功能正在开发中,敬请期待!\n\n关键词: ' + keyword); } else { showModal('请输入搜索关键词'); } }); document.querySelector('.search-box input').addEventListener('keypress', function(e) { if (e.key === 'Enter') { document.querySelector('.search-box button').click(); } }); document.querySelectorAll('.toolbar-buttons button').forEach(function(btn) { btn.addEventListener('click', function() { if (this.textContent.includes('新建')) { showModal('新建笔记功能正在开发中,敬请期待!'); } else if (this.textContent.includes('导入')) { showModal('导入功能正在开发中,敬请期待!\n\n支持格式: Markdown, TXT, HTML'); } else if (this.textContent.includes('导出')) { showModal('导出功能正在开发中,敬请期待!\n\n支持格式: Markdown, PDF, HTML'); } }); }); document.querySelectorAll('.sidebar-item').forEach(function(item) { item.addEventListener('click', function(e) { if (this.querySelector('a')) return; var text = this.textContent.trim(); if (text.includes('收藏')) { showModal('收藏夹功能正在开发中!'); } else if (text.includes('最近')) { showModal('最近修改功能正在开发中!'); } else if (text.includes('回收站')) { showModal('回收站功能正在开发中!'); } else if (text.includes('文件夹') || text.includes('标签')) { showModal('该功能正在开发中!'); } }); }); document.querySelectorAll('.stat-card').forEach(function(card) { card.style.cursor = 'pointer'; card.addEventListener('click', function() { showModal('统计功能正在完善中...'); }); }); </script> <script src="/main.js"></script> <div id="admin-hint" style="display:none;"></div>
源码里最关键的线索是这几个:
html<input type="hidden" id="is-admin" value="true"> <a href="/project/flag-project-001">查看详情</a> <script src="/main.js"></script> <div id="admin-hint" style="display:none;"></div>
优先访问这两个地址:
texthttp://39.105.213.28:5000/project/flag-project-001 http://39.105.213.28:5000/main.js
尤其是 /project/flag-project-001,这个项目 ID 已经直接写成了 flag-project-001,大概率就是 flag 笔记详情页。
你本地可以这样抓:
bashcurl -i -c cookie.txt -d "username=admin&password=123456" \ http://39.105.213.28:5000/login curl -s -b cookie.txt \ http://39.105.213.28:5000/project/flag-project-001 curl -s -b cookie.txt \ http://39.105.213.28:5000/main.js
如果详情页没直接显示 flag,继续试这些接口:
bashfor u in \ /project/flag-project-001 \ /api/project/flag-project-001 \ /api/projects/flag-project-001 \ /api/note/flag-project-001 \ /api/notes/flag-project-001 \ /admin \ /admin/hint \ /api/admin \ /api/admin/hint \ /flag do echo "===== $u =====" curl -s -b cookie.txt "http://39.105.213.28:5000$u" | head -c 1000 echo done
同时查看页面源码,不只看浏览器渲染结果:
bashcurl -s -b cookie.txt \ http://39.105.213.28:5000/project/flag-project-001 \ | grep -iE "flag|ctf|hint|admin|secret|隐藏|秘密"
我这里依然连不上该端口,所以不能替你直接读取最终 flag。把 /project/flag-project-001 或 /main.js 的返回内容贴出来,基本就能继续定位到具体 flag。