- 来源:Root-Me
- 题型:Web-Client
- 题目:Javascript - Native code
- 分数:15 Points
水题,熟悉编码的样子就很容易做。
打开页面弹出了一个交互框,然后强制提交了,再报错 fail
。
打开浏览器开发者工具,切到 Network 找到名为 ch16.html
中的一段被混淆加密的 js 代码。
虽然 js 有很多种混淆加密方式(JsFuck、aaencode、jjencode等),这些加密方式都有明显的识别特征。但是讲真,这题的加密方式我也是第一次看到,Google也找不到是什么类型的混淆加密(有些大神怀疑是双重混淆)。不过就算不知道加密方式,也可以直接利用浏览器去解码(不然浏览器就不能运行这段 js 了)。
复制这段混淆的 js 代码,打开浏览器开发者工具,切到 Console,粘贴进去,回车运行,发现出现了第2步的交互框。说明这是一个 function 函数,刚刚我们通过 Console 控制台调用他了,那么我们让控制台把这个 function 函数打印出来就相当于解码了。
再次黏贴这段混淆的 js 代码到 Console, 然后删除末尾的括号 ()
使其丢失 function 的语义(也可以把末尾的 ()
改成 toString()
),回车运行,此时 Console 就打印了 function 函数原文了。
从 function 函数的 if
条件找到了密码,完成挑战。
答案下载
flag 下载后的 flagzip 的文件需要手动更改后缀为
*.zip
,然后解压即可(为了避免直接刷答案)