前言
赛后自学了nodejs原型链污染后来尝试做这个题,难度不算太大,但是绕过姿势非常奇怪没见过,写一篇总结记录一下做法
wp
首先打开环境发现是一个登录框,题目有附件我们下载查看附件
最关键的就是controller.js和main.js两个文件,index.html是前端代码用处不大
代码审计
controller.js
const fs = require("fs");//引入js模块,为flag1和flag2提供读文件操作
const SECRET_COOKIE = process.env.SECRET_COOKIE || "this_is_testing_cookie"
//设置SECRET_COOKIE的值,如果环境变量process.env中存在SECRET.COOKIE就把这个常量赋值为环境变量中的值,如果环境变量中没有则设置为"this_is_testing_cookie"
const flag1 = fs.readFileSync("/flag1")//读flag1中的值
const flag2 = fs.readFileSync("/flag2")//读flag2中的值
//merge函数,nodejs原型链污染的关键函数,文章后面会放我对这个函数在nodejs原型链污染作用上的理解
function merge(target, source) {
for (let key in source) {
if (key == "__proto__") {
continue;//过滤了__proto__键,本题不能用__proto__来进行原型链污染,但prototype仍然可以使用
}
if (key in target && key in source) {
merge(target[key], source[key])

最低0.47元/天 解锁文章
711

被折叠的 条评论
为什么被折叠?



