【2025 SWPU-NSSCTF 秋季训练赛】gift_F12

【实验原理】

浏览器开发者工具

【实验目的】

掌握查看常规前端javascript脚本中藏匿flag的方式

前端javascript脚本中藏匿flag的方式:

浏览器的核心功能是 "将 HTTP 响应体的 HTML 代码转化为可视化页面",此过程中会对源码进行 "筛选和处理",导致部分信息不展示,但原始源码会完整保留服务器返回的响应体内容。浏览器渲染网页时,会优先解析并展示 "可见内容"(如<p>``<div>标签的文本),但会忽略或隐藏部分代码片段,而这些 "非渲染区域" 正是 Flag 的常见藏匿点,需查看源码才能发现:

  • 1.HTML 注释:开发者通过<!-- 注释内容 -->添加的说明,浏览器不显示在页面上,但会完整保留在源码中(如<!-- flag{xxx} -->);

  • 2.隐藏标签:通过 CSS 样式(display: none、visibility: hidden)或属性(hidden)设置为不可见的标签(如flag{xxx}),浏览器不渲染,但标签内容存在于源码;

  • 3.冗余代码 / 变量:Flag 可能藏在 JS 变量(如var flag = "xxx")、无效标签属性(如<div data-flag="xxx">)中,这些信息不影响页面展示,仅存在于原始源码。

题目考察的是对前端冗余代码/变量藏匿flag的运用

1.开启环境,点击node7.anna.nssctf.cn:26744进入环境

2.进入页面发现是一个倒计时的页面

一般这种页面存在几种解题思路:

复制代码
1.篡改时间参数,使其满足条件,拿到flag
2.查看源码,看看是否存在高亮flag
3.查找对应时间结束节点的js源码(当出现前端flag时),获取到前端藏匿的flag

3.先查找源码,发现并不存在源码高亮flag的情况

但是发现被嘲讽了,说明flag是在前端源码里面的,所以......

4.第二种情况:

存在冗余代码 / 变量:Flag 可能藏在 JS 变量(如var flag = "xxx")、无效标签属性(如<div data-flag="xxx">)中,这些信息不影响页面展示,仅存在于原始源码。

5.查找flag关键字发现了flag

6.具体JS源码

复制代码
   function show_date_time() {
        flag = "WLLMCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}"//flag is here
        window.setTimeout("show_date_time()", 1000);
        BirthDay = new Date("10/23/2021 00:00:00");
        today = new Date();
        timeold = (BirthDay.getTime() - today.getTime());
        sectimeold = timeold / 1000
        secondsold = Math.floor(sectimeold);
        msPerDay = 24 * 60 * 60 * 1000
        e_daysold = timeold / msPerDay
        daysold = Math.floor(e_daysold);
        e_hrsold = (e_daysold - daysold) * 24;
        hrsold = Math.floor(e_hrsold);
        e_minsold = (e_hrsold - hrsold) * 60;
        minsold = Math.floor((e_hrsold - hrsold) * 60);
        seconds = Math.floor((e_minsold - minsold) * 60);
        span_dt_dt.innerHTML = "还有:"+ daysold + "天  " + hrsold + "小时  " + minsold + "分钟  " + seconds + "秒  ";
    }
    show_date_time();

7.flag:

复制代码
WLLMCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}

8.根据格式更改flag

复制代码
NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}

9.tips:

下次不要再给出题人嘲讽了,先发制人,把思路积攒起来

相关推荐
用户47949283569152 小时前
面试官:CNAME和A记录有什么区别?
网络协议
白帽黑客-晨哥3 小时前
OWASP Top 10 2024 深度解析:Web安全新威胁与防御策略
安全·web安全·网络安全·漏洞挖掘·副业
独行soc3 小时前
2025年渗透测试面试题总结-275(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
7ACE4 小时前
Wireshark TS | 关闭连接和超时重传
网络协议·tcp/ip·wireshark
码农12138号5 小时前
服务端请求伪造-SSRF 学习笔记
笔记·web安全·网络安全·ctf·ssrf·服务端请求伪造
今日上上签07077 小时前
山东大学软件学院信息安全导论2025往年回忆版
网络安全·信息安全·山东大学·软件学院·导论·往年题·回忆版
漏洞文库-Web安全8 小时前
AWD比赛随笔
开发语言·python·安全·web安全·网络安全·ctf·awd
小白勇闯网安圈8 小时前
file_include、easyphp、ics-05
网络安全·php·web
这儿有一堆花10 小时前
Windows 环境下 Nmap 的实战逻辑
windows·网络安全
天天扭码10 小时前
京东前端开发实习生 一面
前端·网络协议·面试