其实还是源码分析
dirsearch扫路径,发现有www备份,下载下来肯定是源码分析
文件有点多 more ./*|grep flag一个一个文件夹找,在router目录下找到index.js找到flag相关代码,后来查阅资料发现node.js里面router是根据路由去分模块
就相当java里的spring mvc直接跟用户交互用来寻找功能函数的框架
查看源码:

var express = require('express');
const setFn = require('set-value');
var router = express.Router();const Admin = {"password":process.env.password?process.env.password:"password"
}router.post("/getflag", function (req, res, next) {if (req.body.password === undefined || req.body.password === req.session.challenger.password){res.send("登录失败");}else{if(req.session.challenger.age > 79){res.send("糟老头子坏滴很");}let key = req.body.key.toString();let password = req.body.password.toString();if(Admin[key] === password){res.send(process.env.flag ? process.env.flag : "flag{test}");}else {res.send("密码错误,请使用管理员用户名登录.");}}});
router.get('/reg', function (req, res, next) {req.session.challenger = {"username": "user","password": "pass","age": 80}res.send("用户创建成功!");
});router.get('/', function (req, res, next) {res.redirect('index');
});
router.get('/index', function (req, res, next) {res.send('<title>BUGKU-登录</title><h1>前端被炒了<br><br><br><a href="./reg">注册</a>');
});
router.post("/update", function (req, res, next) {if(req.session.challenger === undefined){res.redirect('/reg');}else{if (req.body.attrkey === undefined || req.body.attrval === undefined) {res.send("传参有误");...skipping 1 linelet key = req.body.attrkey.toString();let value = req.body.attrval.toString();setFn(req.session.challenger, key, value);res.send("修改成功");}}
});module.exports = router;

——————————————————————————————
flag在getflag模块里,那么就要绕过了
分析源码,首先要有一个req.session.challenger对象,因为后面会更改他的age属性,创建功能在reg里直接reg(url)
require函数其实就是包含模块,set-value模块源码在modules里,其实见名知意,赋值模块
然后就是修改上面创建的challenger对象的age属性,用update函数可以实现修改challenger对象的属性,attrkey:age,attrval:20过第一个if
往下走其实就是Admin[key] === password
那么查考Admin对象
const Admin = {
“password”:process.env.password?process.env.password:“password”
}
只有一个属性 password,只要key带过来的不是password,那么就可以是我们指定的属性,而这个属性我们可以根据两者共同的父亲object来设置
关于原型链泄露,其实可以想成java里的父子类,就是子类调用时找不到的属性,会默认去找他的父类可以继承的属性,如果找不到,那就一直找,万物对象的根就是object
Node.js也一样,通过__proto__.pwd更改challenger和Admin共同的父亲object,让他加一个属性pwd,指定值,
然后我们把key设置成pwd,password设置成我们给object赋的pwd值,就可以过这个if,得到flag

Bugku WEB sodirty相关推荐

  1. [Bugku][Web][CTF] 9-15 write up

    [说明] 整合资源 简略版本2020Bugku write up Bugku Web第九题 关键字 :/?args=GLOBALS PHP 将所有全局变量存储在一个名为 $GLOBALS[index] ...

  2. Bugku Web CTF-江湖魔头1

    Bugku Web CTF-江湖魔头1 这道题比较有意思,简陋的武侠游戏,打开一看大致了解其功能: (1)基础属性可随机 (2)一共有血量.外功.内功等属性,还有金钱,金钱可用来在商店购买秘籍 (3) ...

  3. Bugku Web CTF-江湖魔头2

    Bugku Web CTF-江湖魔头2 (接1) 然而在最初的尝试中却发现,当我填入修改好的cookie时,刷新页面属性值都为空(是为空而不是显示0),于是考虑是否因为逆运算哪里出现了问题. 仔细查看 ...

  4. Bugku web 聪明的php

    Bugku web 聪明的php 模板注入 打开题目 模板注入 打开题目 得到提示,传递参数 随机传一个参数,得到源码 在这地方卡了挺久的,发现smarty是个模板,测试一下是不是模板注入 确实为sm ...

  5. BugKu——Web——社工-初步收集

    BugKu--Web--社工-初步收集 一.解题思路 这里可以下载辅助,下载下来的是一个压缩包,不过会被当做病毒处理,设置成信任的即可,解压出来是个*.exe双击启动即可 随便输一个QQ和密码 回显都 ...

  6. Bugku—web题解

    前言:最近做了一些Bugku入门的web题目,感觉web题挺有趣的,并非是得出flag,而是可以通过一个题目学习到很多知识. 域名解析 题目说把 flag.baidu.com 解析到123.206.8 ...

  7. Bugku—web(一)

    前言: 最近做了几个bugku的web题,感觉挺有意思的,学到了不少东西:顺便总结下.(= ̄ω ̄=) 1.你必须让他停下: 打开链接,发现有个一直在闪的页面,时不时还会出现张图片:这是用了 js的se ...

  8. [Bugku][Web][CTF] 30-33 write up

    [说明] 整合资源 简略版本2020Bugku write up web30 关键字: txt or file_get_contents(fn)知识点:filegetcontents(fn) 知识点: ...

  9. Bugku web(1—35)

    1.web2 打开网页: 哈哈,其实按下F12你就会发现flag. 2.计算器 打开网页,只是让你输入计算结果,但是发现只能输入一个数字,这时按下F12,修改一下参数,使之可以输入多个数字,修改后输入 ...

最新文章

  1. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除...
  2. idea @Data 不起作用找不到 相关的注解
  3. makefile之引用(3)
  4. linux批量命令换行,Linux 下的这些高效指令,是你快速入门运维的神器
  5. redis 备份导出rdb_Redis学习——Redis持久化之RDB备份方式保存数据
  6. [转]jQuery知识总结
  7. android下canvas连线题思路
  8. 如何正确的获得一个view的宽和高
  9. 分布式开源调度框架TBSchedule原理与应用
  10. Attention U-Net笔记
  11. 阿里云学生服务器购买教程(附用途案例)
  12. Vue简易图片手风琴组件,包含宽度适应(JS操作CSS实现)
  13. 主数据管理(Master Data Management)基础
  14. 无线分组网关系统解决方案(GGSN、PDSN)
  15. 推荐系统论文:Personalized News Recommendation Based on ClickBehavior
  16. SQL——数据定义DDL
  17. 【Redis基础和应用】(四)HyperLogLog BloomFilter
  18. 利用 GDB 快速阅读 postgresql 的内核代码
  19. python二手房价格预测_分析香港2万6千套在售二手房数据,1000万的居然有那么多...
  20. 【贵阳市公积金相关问题】

热门文章

  1. 使用SQL Server数据库支持SharePoint的5条技巧
  2. OpenFlow协议分析
  3. 优秀前端人都知道的H5 移动端调试全攻略
  4. vue源码:Watcher系列(一)
  5. C#关于JArray和JObject封装JSON对象
  6. 教育平台线上课程数据分析
  7. 盘点2023最佳PC吃鸡神器,和平精英手感舒畅无延时
  8. MDK软件如何查看编译好程序的占Flash的大小
  9. Python爬虫实战:世纪佳缘爬取近6万条小姐姐数据!脱单的有望!
  10. 基于JAVA医用物品管理系统计算机毕业设计源码+系统+数据库+lw文档+部署