猿人学内部练习平台第16题

第16题:表情包+sojson6.0

抓包分析可知,需逆向safe参数,根据调用堆栈很容易找到safe的生成位置,如下:

上方有一段特殊字符组成的内容,查看上下文并未找到token,因此token很可能是这段特殊字符构成的代码生成的,单步调试可以发现,上面是在进行赋值操作,最后一行很长的那一行是进行一些函数执行,将最后一行复制到控制台,删除最后一个括号 ('_'),可以看到具体的执行代码:

双击进去,可以看到,token = window.btoa(a)+('|')+binb2b64(hex_sha1(window.btoa(core_sha1(a)))) + b64_sha1(a)

鼠标悬停至 core_sha1 上,点击进入 main.js:1 进入原方法位置,不要格式化复制整个文件代码到本地,然后简单补充下代码即可:

// 未格式化的 main.js 内容复制到此处

function btoa(input) {
    let buf = Buffer.from(input, 'utf8');
    return buf.toString('base64')
}

function decode() {
    let a = String(Date.parse(new Date()) / 1000);
    return btoa(a.toString()) + ('|') + binb2b64(hex_sha1(btoa(core_sha1(a).toString()))) + b64_sha1(a);
}

token = decode()
console.log(token)

可以看到,输出结果为正确的格式:

然后在python中通过 subprocess.check_output(['node', 'topic16_.js']).decode().replace('\n', '') 调用即可。

posted @ 2024-04-28 22:07  脱下长日的假面  阅读(28)  评论(0编辑  收藏  举报