NSSCTF入门题单[LitCTF 2023]WriteUP-NSSCTF-3871
[LitCTF 2023]这套题是Web方向入门题单,这是我的第15题
- 题单【传送门 (opens new window)】
- 主办方WriteUP【传送门 (opens new window)】
- 主办方WriteUP视频【传送门 (opens new window)】
题目编号 | 题目名称 | 题目方向 | 难度 |
---|---|---|---|
3871 | 1zjs | Web | 1 |
# 题目15: 1zjs
# 题目描述:js…?不确定,再看看。Flag形式 NSSCTF{}
# 考点1:JavaScript基础
# 预期解:通过执行JSfuck得到Flag
根据题目描述,我们查看js代码内容,没找到想要的目标。通过查阅主办方WP得到以下方法:
上来先审查元素,看到有引入了一个index.umd.js的文件
<script src="./dist/index.umd.js"></script>
点击前往该文件,我们看到有文件开头有一大片的注释信息,一般情况下是把目标放到注释里的,看到这里有个名为/f@k3f1ag.php文件
在浏览器地址栏访问该文件,我们看到如下信息
这段信息叫JSfuck,我们将其复制出来,在F12的Console控制台粘贴该内容,返回了一个Warning的警告,意思需要输入allow pasting,打开粘贴功能。执行该JSfuck命令后,即可拿到Flag。
JSFuck是一种基于JavaScript (opens new window)的编程风格,它使用六个不同的字符([ ] ( ) + [ ] !)来编写和执行代码。这种编程风格源于Brainfuck (opens new window),但仅使用六种符号,而不是Brainfuck的八种符号。JSFuck不依赖于特定的浏览器环境,甚至可以在Node.js (opens new window)中运行12。
# 基本原理
JSFuck的基本思想是通过这些六个字符的组合来模拟JavaScript的语法和行为。例如:
[]
:定义一个数组()
:定义一个函数+
:进行加法操作!
:逻辑非操作通过这些基本操作,可以构建出复杂的JavaScript代码结构。
# 使用场景
JSFuck不仅可以用作一种编程练习或教学工具,由于其代码难以阅读和理解的特性,它还可以用于代码混淆和绕过某些安全检测。例如,在跨站点脚本(XSS) (opens new window)攻击中,通过使用JSFuck编码的代码可以绕过一些简单的过滤机制,增加攻击的成功率。
# 思路2:通过package.json文件找到对应的Git仓库,对比发现
由Tao/.师傅提供思路
访问路径下的package.json文件,看到有仓库的信息,对比index.html文件,找到index.umd.js,后续操作和思路1相同