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相关推荐

  1. Bugku WEB sodirty

    其实还是源码分析 dirsearch扫路径,发现有www备份,下载下来肯定是源码分析 文件有点多 more ./*|grep flag一个一个文件夹找,在router目录下找到index.js找到fl ...

  2. php 伪协议 lfi,php://伪协议(I/O)总能给你惊喜——Bugku CTF-welcome to bugkuctf

    今天一大早BugkuCTF 的welcome to bugkuctf 就给了我一发暴击:完全不会啊...光看源码就发现不知道怎么处理了,于是转向writeup求助.结果发现这是一道非常有营养的题目,赶 ...

  3. BUGKU 密码题:这不是摩斯密码

    BUGKU 密码题:这不是摩斯密码 这不是摩斯密码 打开文件,发现如下符号: 可以发现,符号都是由> < + - . , [ ]来组成.那么显然,这个是Brainfuck加密.这里推荐一个 ...

  4. Bugku——Web——矛盾

    题目链接:http://ctf.bugku.com/challenges#矛盾:http://123.206.87.240:8002/get/index1.php 解题步骤: 1.is_numeric ...

  5. 输入密码查看flag(详解)——Bugku

    刚刚做了bugku的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!! Ch ...

  6. 点击一百万次(详解)——bugku

    刚刚做了bugku的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!! Ch ...

  7. bugku——web 做题记录

    Table of Contents 2,秋名山车神: 3,速度要快 4 welcome to the bugkuctf 1,login1(sql约束攻击) sql约束攻击: 2,过狗一句话 3,细心 ...

  8. bugku ——加密 做题记录

    目录 1,滴答-滴 2,聪明的小羊 3,ok 4这不是摩斯密码 5,easy_crypto 6,简单加密 7,散乱的密文 8 凯撒部长的奖励 9,一段base64 10,.!? 11,+[]-(Bra ...

  9. Bugku—web题解

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

最新文章

  1. copy构造函数使用深copy
  2. sql a 表 若包含b表 则a 表 列显示_几道常见的SQL面试题,看你能答对几道?
  3. python面向对象难学_python-面向对象进阶
  4. Musical Theme POJ - 1743(后缀数组+二分)
  5. 300 s7 置零指令_西门子S7-1200能否全面取代S7-300,先看数据!
  6. 【果断收藏】16个经典面试问题及回答思路
  7. 文本圆角背景_ppt模板航天日PPT,半透明几何圆角长方形文本框
  8. java中的内存回收机制所采用的算法_JavaGC垃圾回收机制和常见算法
  9. python无限锁屏_【python】定时锁屏,保护身体
  10. Zcash下一次NU5升级——基于Halo 2
  11. android开源音乐播放器简单demo,Android开源在线音乐播放器——波尼音乐
  12. AxureRP9(team版)安装+汉化+秘钥
  13. tcp 握手失败_什么是三次握手,握手为何要进行三次,如果握手失败会有什么后果...
  14. 非网页版微信机器人-Wechaty
  15. window10关闭磁盘bitlocker加密
  16. 字符串中出现次数最多的字符
  17. 《抽样技术》第3章 分层随机抽样(st)
  18. 锐龙r76800h和r75800h差距 r7 6800h和r7 5800h差多少
  19. 关于uniapp发送post请求无响应的问题
  20. 一建比二建对比难在哪?难多少?

热门文章

  1. 沃通“SSL证书+代码签名证书”,防范高仿“钓鱼网站+钓鱼软件”攻击
  2. 1.4 Linux 命令行界面
  3. HTTP1.0、1.1、2.0的关系和区别以及编码和字符集的解释
  4. mac 更改所有文件夹显示选项的方法
  5. 从大山走出的阿里首席通信科学家,这次要重返课堂
  6. 域名DNS解析发生故障了怎么办?
  7. 中国互联网金融协会名单(P2P理财)
  8. OA系统与ERP系统的区别
  9. JSP入门基础知识之tr,th,td
  10. uml图中的连线和方框代表什么含义?