Webhacking.kr g00gle1
Challenge
题目跳转到一个公开的 Google Form,目标是检查浏览器实际加载的页面源码和脚本,从客户端数据中找到 flag。
题目入口:
1 | https://forms.gle/P2uTaZw9252V59L86 |
Solution
在 chall.php 中找到 g00gle1
后,入口链接指向 Google Form。展开短链接后,实际页面为:
1 | https://docs.google.com/forms/d/e/1FAIpQLSd5S_aJDd8jMiGEpabw1l4NCObP-4Zwdd5l0uAQU5NElpsrCw/viewform |
页面标题为 g00gle1。表单看起来只需要选择
yes 或
sure,但提交表单不是必要步骤。题目的有效信息已经随 HTML 和
inline JavaScript 发送到浏览器。
使用 View page source,或者在开发者工具的
Sources 面板中搜索
FLAG{,可以在页面内联脚本的
FB_PUBLIC_LOAD_DATA_ 数据中看到完整题面和
flag。实际源码中对应的结构如下:
1 | var FB_PUBLIC_LOAD_DATA_ = [ |
关键数据位于 FB_PUBLIC_LOAD_DATA_
的表单初始化数据中。它同时包含表单问题、选项和提交后显示的文本;因此仅检查表单渲染后的可见控件可能遗漏
flag。
也可以在浏览器控制台中执行以下代码,筛选所有 inline script 中的 flag 字面量:
1 | [...document.scripts] |
在当前页面中,该表达式返回题目 flag。Network
面板可以进一步确认这段数据已经包含在页面加载响应中,客户端没有额外的隐藏请求或复杂利用链。