比赛:GXUST·CTF
分类:Misc / 签到(Web 入门)
难度:★☆☆☆☆(签到)
考点:查看网页源码、HTML 注释、Base64 编码与解码
一、题目描述
打开题目,页面非常简洁,只有三行字:

页面直接提示:"按个 ctrl + U 看一看吧~"。
Ctrl + U 是浏览器里查看网页源代码的快捷键,这等于把解题方向明牌告诉我们了------flag 大概率藏在源码里。
二、解题步骤
1. 查看源码
按下 Ctrl + U(或右键页面 → "查看网页源代码"),在第 27 行发现了一行 HTML 注释:

html
<!-- flag is here: ZmxhZ3tXZWxjb21lIHRvIEdYVVNUwrdDVEZ9 -->
注释里写着 flag is here:,后面跟着一串看起来像 Base64 的字符串:
ZmxhZ3tXZWxjb21lIHRvIEdYVVNUwrdDVEZ9
注意:复制时要完整、准确地复制,大小写以及
Y、V等字符不要看漏或抄错,否则会解码失败或得到错误结果。
2. Base64 解码
这串字符只包含字母和数字,且长度是 4 的倍数,符合 Base64 的特征。对其进行 Base64 解码。
方法一:Linux / Mac 命令行
bash
echo "ZmxhZ3tXZWxjb21lIHRvIEdYVVNUwrdDVEZ9" | base64 -d
方法二:在线工具 CyberChef
打开 https://gchq.github.io/CyberChef/ ,拖入 From Base64 模块,粘贴字符串即可解码。
解码结果:
flag{Welcome to GXUST·CTF}
3. 校验(可选)
为了确认结果正确,可以把解码后的内容重新 Base64 编码,看是否能还原出源码中的字符串:
bash
echo -n "flag{Welcome to GXUST·CTF}" | base64
# 输出:ZmxhZ3tXZWxjb21lIHRvIEdYVVNUwrdDVEZ9
与源码完全一致,flag 正确。
三、得到 flag
flag{Welcome to GXUST·CTF}
四、知识点讲解
4.1 查看网页源码
- 快捷键:
Ctrl + U(Windows / Linux)、Cmd + Option + U(Mac); - 也可以右键 → "查看网页源代码",或按
F12打开开发者工具; - 前端的 HTML、CSS、JavaScript 代码对用户是完全透明的,任何人都能看到。
4.2 HTML 注释
HTML 注释的格式为:
html
<!-- 这是一段注释,页面上不会显示,但源码里能看到 -->
CTF 中经常把提示或 flag 藏在注释里,属于最基础的"信息隐藏"位置。类似的隐藏位置还有:
- HTML 标签的隐藏属性;
- CSS / JS 文件中的注释;
- HTTP 响应头(
F12 → Network查看); - 元素的
display:none等。
4.3 Base64 编码
Base64 是一种编码方式,不是加密算法。 它没有密钥,任何人都能一键解码,因此绝不能用来保护敏感信息。
- 字符集 :
A-Z、a-z、0-9、+、/,共 64 个字符,因此得名 Base64; - 填充 :输出长度为 4 的倍数,不足时用
=在末尾补齐; - 作用:把二进制数据用可打印字符表示,常用于在文本协议中传输数据(如邮件、Data URL、JWT 等),目的不是保密;
- 常见变种 :
- Base32:字符集
A-Z、2-7; - Base16(Hex):字符集
0-9、A-F; - Base64URL:用
-、_替换+、/,用于 URL 场景。
- Base32:字符集
各语言解码示例:
python
# Python
import base64
base64.b64decode("ZmxhZ3tXZWxjb21lIHRvIEdYVVNUwrdDVEZ9").decode()
4.4 如何快速识别常见编码
| 编码 | 识别特征 |
|---|---|
| Base64 | 字母数字 + + /,可能以 = 结尾,长度为 4 的倍数 |
| Base32 | 大写字母 + 2-7,可能以 = 结尾 |
| Hex / Base16 | 仅 0-9、a-f(或 A-F) |
| URL 编码 | % 加两位十六进制,如 %20 |
| Unicode | \uXXXX 形式 |
| 摩斯密码 | . 和 - 组成 |
五、安全启示(防御视角)
这道签到题虽然简单,但反映了一个非常重要的安全原则:
- 前端没有秘密可言:任何下发到浏览器的 HTML、JS、注释,用户都能完整查看。不要把 flag、密钥、后台接口、内部逻辑等敏感信息写在前端。
- 编码 ≠ 加密:Base64、Hex、URL 编码都只是"换一种表示方式",可逆且无需密钥,几秒钟就能还原。真正要保密必须使用正规的加密算法并妥善保管密钥。
- 敏感信息放在服务端:flag、凭证等应保存在服务器,只在服务端校验和使用,不能通过页面源码、Cookie、JS 变量等方式下发给客户端。
六、总结
本题是标准的签到题,解题链路为:
按提示
Ctrl + U查看源码 → 在 HTML 注释中找到 Base64 字符串 → Base64 解码 → 得到 flag。
需要记住的核心点:
- 前端源码对用户完全透明,注释是 CTF 常见藏 flag 的位置;
- Base64 是编码不是加密,可一键还原;
- 看到特征明显的字符串,先判断编码类型,再用对应工具解码。
Flag:
flag{Welcome to GXUST·CTF}
版权声明
- 本文为个人 CTF 学习笔记(Writeup),题目版权归 GXUST·CTF 主办方所有。
- 本文的文字分析、整理与总结部分为本人原创,转载请注明出处。
- 本文仅用于网络安全学习与研究,请勿用于任何未授权测试;如内容涉及侵权,请联系本人删除。