2022强网拟态 WHOYOUARE

先说一下这个思路 由于禁用了__proto__所以我们可以通过constructor.prototype来绕过

之前一直不明白为什么是这样绕过的后来仔细研究了一下 本人菜鸡 如果是有分析错误的地方 欢迎大佬来斧正

说一下这样绕过的原理

我们对象的__proto__指向的是该对象的原型 构造函数 的prototype也是指向生成对象的原型

所以就有 对象的__proto__===构造函数 的prototype

然后还有一个东西叫做 constructor 这个东西呢是 原型才有的

我们可以看到这个constructor属性呢指向的是构造函数 这个例子中Object是构造函数

然后我们又可以通过构造函数来寻找到原型 这里利用construstor.prototype

然后看一这个对象.construstor.prototype就指向的是对象的原型

因为 这里我们在对象中是找不到construstor的 那他就会在上层 ,对象的__proto__属性中去找construstor

而对象的__proto__属性也就是是 函数的prototype 他这个里面是由指向构造函数的constrstor 然后又通过prototype找到对象的原型

这样解释感觉有点乱 但是理解了prototype,__proto__,construstor和继承关系之后 自己去想一想还是很好想通的

通过 这篇文章来理解他们三个之间的关系

现在我们理解了 为什那么可以通过construstor.prototype来绕过__proto__之后我们继续看往下怎么污染 污染什么

这里我们污染大Object污染1为cat /flag这个必须要污染的值的属性名是1 因为我们要覆盖 数组下标为1的id 所以必须是1 一下是随意污染的值的属性名的情况 (vscode的调试真的超级好用!!!!!)

一定要污染到大Object

因为这个数组command的下标为什么能赋值覆盖的 是因为这里的command数组进行了继承

由于我们污染了大Object 然后数组的往上找 的原型是Array

再往上才是Object

所以正确的payload就是

{"user":"{\"command\":[\"-c\"],\"constructor\":{\"prototype\": {\"1\": \"cat /flag\"}}}"}
{"user":"{\"command\":[\"-c\"]}"}

这里是在本机Windows里面调得 linux里面是可以直接执行命令的

核心思想应该就是把赋值过的东西在赋值覆盖一下 这道题拖了好长时间了 今天终于完完全全的调试下来了

最新文章

  1. DOG检测
  2. NoSQL-Redis【2】-HDEL给我的一个惊喜
  3. SevenZip.pas BUG修改版 - 20160613
  4. VLAN
  5. 理解netty对protocol buffers的编码解码
  6. GCD编程 之 略微提高篇
  7. C语言qsort函数用法
  8. stm32 usb数据接收与数据发送程序流程分析
  9. Android 相对布局常用属性
  10. Android手机设置隐藏命令大全
  11. Win8.1应用开发之异步编程
  12. redhat Redis的安装和部署
  13. 拓扑排序下的有无环判定 STL方法
  14. Mego开发文档 - 加载关系数据
  15. vue部署的路径问题
  16. 计算机网络ip地址
  17. spring InitializingBean和DisposableBean init-method 和destroy-method @PostConstruct @PreDestroy
  18. r里面如何实现两列数据合并为一列
  19. week3-构造一个简单的linux系统
  20. 11慕课网《进击Node.js基础(一)》Buffer和Stream

热门文章

  1. 学习ASP.NET Core Blazor编程系列二十六——登录(5)
  2. JavaScript的闭包和作用域
  3. Linux练习题--打印文本第10行
  4. 学习Vue过程中遇到的问题---code: 'MODULE_NOT_FOUND'
  5. 【KAWAKO】audiotsm-使用python对音频进行变速不变调处理
  6. JZOJ 5351. 【NOIP2017提高A组模拟9.7】简单无向图
  7. JSP 与 Servlet 之间的联系,及其语法
  8. ubuntu 启动脚本变化
  9. ISE_14.7_Windows10安装
  10. Create 1select+jdbc+jsp