bugku sodirty
sodirty
这是一道简单的js原型污染的题目
了解JavaScript
JavaScript一切皆对象,所以先了解JS对象
var obj ={}
创建obj这个对象,并没有赋予他任何属性或者方法,但是他会具有一些内置属性和方法,像__proto__,constructor,toString等.
但obj对象会继承__proto__的原型连接,拥有对象的方法
同时js对象的继承也是依赖__proto__所以不注意子类和父类会共享一个属性地址。
这样可以通过__proto__修改子类属性同时也会修改父类的属性造成原型的污染
首先来看题目:
点击注册
更多就没有什么信息了,于是就扫描一下目录得到:
发现有网站的源码下载下来看看
首先我们分析这段代码这是一个登陆的路由:“/getflag”,当我们请求的密码password不为空,age要小于79,并且密码等于admin的密码就登陆成功获得flag
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("密码错误,请使用管理员用户名登录.");}}});
所以我们先在路由:"/reg"注册一个用户
注册源码:
router.get('/reg', function (req, res, next) {req.session.challenger = {"username": "user","password": "pass","age": 80}res.send("用户创建成功!");
});
这里创建的用户默认age=80,需要修改
然后利用路由:“/updata”,去修改我们的信息,去把年龄修改为小于79岁,并且利用原型链把admin的密码和我们注册的用户的密码修改成一样:
修改数据的源码:
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("传参有误");}else {let key = req.body.attrkey.toString();let value = req.body.attrval.toString();setFn(req.session.challenger, key, value);res.send("修改成功");}}
});
先修改age:
修改密码和admin一致:
然后登陆获取flag:
bugku sodirty相关推荐
- Bugku WEB sodirty
其实还是源码分析 dirsearch扫路径,发现有www备份,下载下来肯定是源码分析 文件有点多 more ./*|grep flag一个一个文件夹找,在router目录下找到index.js找到fl ...
- php 伪协议 lfi,php://伪协议(I/O)总能给你惊喜——Bugku CTF-welcome to bugkuctf
今天一大早BugkuCTF 的welcome to bugkuctf 就给了我一发暴击:完全不会啊...光看源码就发现不知道怎么处理了,于是转向writeup求助.结果发现这是一道非常有营养的题目,赶 ...
- BUGKU 密码题:这不是摩斯密码
BUGKU 密码题:这不是摩斯密码 这不是摩斯密码 打开文件,发现如下符号: 可以发现,符号都是由> < + - . , [ ]来组成.那么显然,这个是Brainfuck加密.这里推荐一个 ...
- Bugku——Web——矛盾
题目链接:http://ctf.bugku.com/challenges#矛盾:http://123.206.87.240:8002/get/index1.php 解题步骤: 1.is_numeric ...
- 输入密码查看flag(详解)——Bugku
刚刚做了bugku的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!! Ch ...
- 点击一百万次(详解)——bugku
刚刚做了bugku的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!! Ch ...
- bugku——web 做题记录
Table of Contents 2,秋名山车神: 3,速度要快 4 welcome to the bugkuctf 1,login1(sql约束攻击) sql约束攻击: 2,过狗一句话 3,细心 ...
- bugku ——加密 做题记录
目录 1,滴答-滴 2,聪明的小羊 3,ok 4这不是摩斯密码 5,easy_crypto 6,简单加密 7,散乱的密文 8 凯撒部长的奖励 9,一段base64 10,.!? 11,+[]-(Bra ...
- Bugku—web题解
前言:最近做了一些Bugku入门的web题目,感觉web题挺有趣的,并非是得出flag,而是可以通过一个题目学习到很多知识. 域名解析 题目说把 flag.baidu.com 解析到123.206.8 ...
最新文章
- copy构造函数使用深copy
- sql a 表 若包含b表 则a 表 列显示_几道常见的SQL面试题,看你能答对几道?
- python面向对象难学_python-面向对象进阶
- Musical Theme POJ - 1743(后缀数组+二分)
- 300 s7 置零指令_西门子S7-1200能否全面取代S7-300,先看数据!
- 【果断收藏】16个经典面试问题及回答思路
- 文本圆角背景_ppt模板航天日PPT,半透明几何圆角长方形文本框
- java中的内存回收机制所采用的算法_JavaGC垃圾回收机制和常见算法
- python无限锁屏_【python】定时锁屏,保护身体
- Zcash下一次NU5升级——基于Halo 2
- android开源音乐播放器简单demo,Android开源在线音乐播放器——波尼音乐
- AxureRP9(team版)安装+汉化+秘钥
- tcp 握手失败_什么是三次握手,握手为何要进行三次,如果握手失败会有什么后果...
- 非网页版微信机器人-Wechaty
- window10关闭磁盘bitlocker加密
- 字符串中出现次数最多的字符
- 《抽样技术》第3章 分层随机抽样(st)
- 锐龙r76800h和r75800h差距 r7 6800h和r7 5800h差多少
- 关于uniapp发送post请求无响应的问题
- 一建比二建对比难在哪?难多少?
热门文章
- 沃通“SSL证书+代码签名证书”,防范高仿“钓鱼网站+钓鱼软件”攻击
- 1.4 Linux 命令行界面
- HTTP1.0、1.1、2.0的关系和区别以及编码和字符集的解释
- mac 更改所有文件夹显示选项的方法
- 从大山走出的阿里首席通信科学家,这次要重返课堂
- 域名DNS解析发生故障了怎么办?
- 中国互联网金融协会名单(P2P理财)
- OA系统与ERP系统的区别
- JSP入门基础知识之tr,th,td
- uml图中的连线和方框代表什么含义?