收获

  • JS 逆向,了解 js 语言的抽象语法树(AST)

  • 使用 escodegen 将 JavaScript AST 转换为代码

  • 在浏览器的控制台中可以直接运行 js 代码


【SWPUCTF】astJS


思路

题目文件为一个 json 文件:

SWPUCTF-astJS1.png

该文件其实是 js 语言的 AST(抽象语法树),表现形式为 json 文件的格式

使用 npm 命令安装 escodegen 模块

npm i escodegen -g

SWPUCTF-astJS2.png

利用 escodegen 将 js 语句的 AST 语法树 —— json 文件转化成 js 语句:

esgenerate 附件.json

SWPUCTF-astJS3.png

得到转换后的 js 代码如下:

(function () {
    function bE(str, key) {
        var arr = str.split('');
        return arr.map(i => {
            return String.fromCharCode(i.charCodeAt() ^ key);
        }).join('');
    }
    console.log(bE('EXXH_Mpjx\x7FBxYnjggrM~eerv', 11));
}());

将该 js 代码在浏览器的控制台中运行,即可得到 flag:

SWPUCTF-astJS4.png


结果

NSSCTF{astIsReallyFunny}