2024 第一届VCTF 纳新赛 Web方向 题解WP

hackjs

题目描述:A baby oldjs, just warm up.

附件给源码

const express = require('express')
const fs = require('fs')
var bodyParser = require('body-parser');
const app = express()
app.use(bodyParser.urlencoded({extended: true
}));
app.use(bodyParser.json());app.post('/plz', (req, res) => {venom = req.body.venomif (Object.keys(venom).length < 3 && venom.welcome == 159753) {try {if(venom.hasOwnProperty("text")){res.send(venom.text)}else{res.send("no text detected")}} catch {if (venom.text=="flag") {let flag=fs.readFileSync("/flag");res.send("Congratulations:"+flag);} else {res.end("Nothing here!")}}} else {res.end("happy game");}
})app.get('/',
function(req, res, next) {res.send('<title>oldjs</title><a>Hack me plz</a><br><form action="/plz" method="POST">text:<input type="text" name="venom[text]" value="ezjs"><input type="submit" value="Hack"></form>  ');
});app.listen(80, () => {console.log(`listening at port 80`)
}) 

开题

image-20240316135254032

点击hack进入/plz路由,代码不分析了,gpt都能看懂。

所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

payload:

venom[__proto__][welcome]=159753&venom[hasOwnProperty]=Jay17&venom[text]=flag

解释一下:

  1. venom[__proto__][welcome]=159753:这一部分试图修改venom对象的原型(即venom对象的__proto__属性指向的对象)上的welcome属性。在JavaScript中,所有的对象默认继承自Object.prototype,除非明确地改变了对象的原型链。通过设置venom[__proto__][welcome]=159753,它实际上是在所有对象的原型上设置了welcome属性的值为159753,因为__proto__是指向对象原型的引用。
  2. venom[hasOwnProperty]=Jay17:这部分将venom对象的hasOwnProperty属性设置为字符串"flag"。正常情况下,hasOwnProperty是一个继承自Object.prototype的方法,用于检查对象是否拥有特定的自有属性。通过将它设置为一个字符串,venom.hasOwnProperty("text")的调用将会失败,因为hasOwnProperty已不再是一个函数。所以进入catch
  3. venom[text]=flag:这部分设置venom对象的text属性为字符串"flag"

现在,让我们回到原始的服务器端代码逻辑,看看为什么这个传参能够导致输出flag:

  • 服务器期望venom对象有一个welcome属性,其值为159753,而这已经通过原型污染在所有对象上设置了。
  • 服务器代码检查venom.hasOwnProperty("text"),这个调用会失败(抛出异常)因为hasOwnProperty已被覆盖为一个非函数值,这使得执行流进入到catch块。
  • catch块中,代码检查venom.text=="flag",这个条件为真,因为venomtext属性已经被设置为"flag"
  • 因此,满足了输出flag的条件。

image-20240316143200913

但是我很好奇的一点是,如下payload和之前同理,却无法输出flag

venom[welcome]=159753&venom[hasOwnProperty]=Jay17&venom[__proto__][text]=flag

image-20240316143913637

但是这样又可以了(为什么原型链污染一定要放在传参的最前面呢???)

venom[__proto__][text]=flag&venom[hasOwnProperty]=Jay17&venom[welcome]=159753

image-20240316143851261

Archived elephant【没出等WP】

题目描述:本打算通过写一个CMS来学习java狠狠赚他一笔,但写到一半发现好像有漏洞。都怪这个组件…虽然我也有问题:)

思路不要局限于文件上传本身,注意看题面

关键!!不是ueditor的历史漏洞,另外请注意pom.xml中存在较低版本的依赖

开题登录框。账号密码附件里找

image-20240316151031713

image-20240316151059831

之后是个文件上传点

image-20240316151219894

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/544816.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day39:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化

目录 SpringBoot-监控系统-Actuator SpringBoot-接口系统-Swagger 思维导图 Java知识点&#xff1a; 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;序列化数据&#xff0c;身份验证&#xff0c;框架开发&#xff0c;第三方组件使用等. 框架库&#xff1a;MyB…

HarmonyOS NEXT应用开发—视频全屏切换案例

介绍 本示例介绍了Video组件和ohos.window接口实现媒体全屏的功能。 该场景多用于首页瀑布流媒体播放等。 效果图预览 使用说明&#xff1a; 点击全屏按钮&#xff0c;横屏媒体窗口。点击恢复窗口按钮&#xff0c;恢复媒体窗口。 实现步骤 在Video组件内调用 onFullscreen…

23. BI - 基于酒店建立内容推荐系统

本文为 「茶桁的 AI 秘籍 - BI 篇 第 23 篇」 文章目录 基于内容的推荐酒店数据说明TF-IDF基于酒店做推荐数据探索建模并计算执行推荐 总结 Hi&#xff0c;你好。我是茶桁。 上一节课咱们终于是将矩阵分解的完整内容全部都给大家讲完了。矩阵分解是推荐系统里面比较重要的一个环…

ARM和AMD介绍

一、介绍 ARM 和 AMD 都是计算机领域中的知名公司&#xff0c;它们在不同方面具有重要的影响和地位。 ARM&#xff08;Advanced RISC Machine&#xff09;&#xff1a;ARM 公司是一家总部位于英国的公司&#xff0c;专注于设计低功耗、高性能的处理器架构。ARM 架构以其精简指…

C语言基础之单向链表

一、链表的概述 1、单向链表的概述 单向链表是由一个个节点组成&#xff0c;节点没有名字&#xff0c;链表中的每个节点都包含一个存储空间&#xff0c;用于存储数据&#xff0c;以及一个指针&#xff0c;指向下一个节点的位置 达到逻辑上连续。这些节点在内存中是分散存储的…

面向控制台编程?Java的GUI开发

记得之前刚开始学习Java&#xff0c;按部就班去阅读《Java核心技术》这本书的时候&#xff0c;总是听别人提起&#xff0c;java swing那一章不用看了。然后直到对着控制台编程了半年&#xff0c;回来捡起了Swing图形界面&#xff0c;跟着网上搞了坦克大战的游戏&#xff0c;总觉…

论文阅读——Rein

Stronger, Fewer, & Superior: Harnessing Vision Foundation Models for Domain Generalized Semantic Segmentation 一、引言 是一个对Domain Generalized Semantic Segmentation (DGSS)任务的视觉大模型的微调方法&#xff0c;即Rein。 Rein 专为 DGSS 任务量身定制&a…

最细节操作 Linux LVM 逻辑卷管理

Linux LVM&#xff08;逻辑卷管理&#xff09; 周末愉快&#xff0c;今天带大家实战一下LVM! 一、LVM理论 LVM&#xff0c;即Logical Volume Manager&#xff0c;逻辑卷管理器&#xff0c;是一种硬盘的虚拟化技术&#xff0c;可以允许用户的硬盘资源进行灵活的调整和动态管理…

MySQL语法分类 DQL(6)分页查询

为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),math int,english int );insert into student (id,name,age,sex,address,math,english) values (1,马云,55,男,杭州,66,78),…

计算机设计大赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

【jeecgboot】微服务实战LISM

目录 一、服务解决方案-Spring Cloud Alibaba1.1选用原因&#xff08;基于Spring Cloud Alibaba的试用场景&#xff09;1.2 核心组件使用前期规划 部署 nacos部署 mino使用JavaFreemarker模板引擎&#xff0c;根据XML模板文件生成Word文档使用JavaFlowable 工作流引擎前端 -vue…

redis中List和hash数据类型

list类型是用来存储多个有序的字符串的&#xff0c;列表当中的每一个字符看做一个元素&#xff0c;一个列表当中可以存储一个或者多个元素&#xff0c;redis的list支持存储2^32-1个元素。redis可以从列表的两端进行插入&#xff08;pubsh&#xff09;和弹出&#xff08;pop&…