一般说玩游戏的题答案在源码里,但是本题源码中没有任何跟 “flag” 或者 “ctf” 有关的信息。
页面如下:
在此页面中 F12 调不出控制台(可能是在 js 代码中禁用了)。但其实还有两种方法可以唤出控制台,一是右键->检查。二是火狐浏览器右边的三横->更多工具->开发者工具。
一般来说这种题目给出 flag 的方式是通过 alert 函数弹窗。
只有一个 alert ,估计这就是 flag 了。
{ }
调一下格式:稍微分析一下代码,需要满足 this['getScore']()
函数的返回值大于某个数才会触发 alert 。
简单搜索一下,发现了 getScore 函数的定义,其返回值是 score 。那么思路已经很明确了,调试代码到此处,修改 score 的值,将它改为一个很大的数即可。
84 行打断点;
刷新该页面;
空格键开始游戏;
此时代码已经运行到断点处。
修改为一个很大的数,回车,然后点三角形继续运行。
弹出 flag :
本题还有许多种解法,但思路都大同小异:覆盖源代码属性的值或者部分源代码使之符合输出 flag 的条件。
最好还要有一定的 javascript 基础做起来才会更轻松一点。