23、Web攻防——Python考点CTF与CMS-SSTI模板注入PYC反编译

文章目录

  • 一、PYC文件
  • 二、SSTI

在这里插入图片描述

一、PYC文件

pyc文件:python文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的,类似java的.class文件,一般python文件改变后,都会重新生成pyc文件。

pyc文件反编译平台:

  • https://tool.lu/pyc

实战中一般拿不到pyc文件,仅CTF。

二、SSTI

SSTI漏洞资料

在这里插入图片描述
模板引擎:模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,利用模板引擎来生成前端的html代码,模板引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,然后放到渲染函数里,然后生成模板+用户数据的前端html页面,然后反馈给浏览器,呈现在用户面前。

SSTI:服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。
凡是使用模板的地方都可能会出现 SSTI 的问题,SSTI 不属于任何一种语言,沙盒绕过也不是,沙盒绕过只是由于模板引擎发现了很大的安全漏洞,然后模板引擎设计出来的一种防护机制,不允许使用没有定义或者声明的模块,这适用于所有的模板引擎。

再次理解什么是SSTI?
以淘宝为例,随便访问一个不存在的路径,都会有一个报错页面,而且基本上都是一样的。这就是说明存在模板。
在这里插入图片描述

如果报错页面的url或者post数据中,有一个参数你是可以控制,且会显示在报错页面中,那么就有可能存在SSTI模板注入。
python中{{xxx}},xxx可能会被执行。

SSTI安全问题在生产环境中产生?

  • 存在模板引用的地方,如404错误页面显示;
  • 存在数据接收引用的地方,如模板解析获取参数数据。

如何判断存在SSTI漏洞?

  • 查看源代码,是否使用框架包;
  • 是否使用类似flask.render.template.string()函数
  • 在可控参数中输入类似/{{2-2}},看界面是否解析2-2.
    在这里插入图片描述

发现SSTI漏洞之后,思路就是命令执行和文件读取。
黑盒里面基本上找不到SSTI模板注入。

参考资料:
https://blog.csdn.net/houyanhua1/article/details/85470175
BUUCTF
苹果CMS
ctfer 从0到1

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

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

相关文章

金蝶EAS打印凭证,数据量多点的就会出错

金蝶EAS打印凭证,数据量多点的就会出错,约过100页,提示数据源有问题 经咨询工程师需修改java虚拟机内存。 打开eas客户端目录,运行set-url.bat 看到原来java虚拟机只配置了512M内存,把虚拟机内存修改为4096&#xff0…

如何解决苹果应用商城审核拒绝的Guideline 2.1 - Information Needed问题

当你的应用程序在苹果应用商城审核过程中被拒绝时,苹果会向您发送一封邮件,其中提供了关于拒绝原因的详细信息。本文将指导您如何正确处理Guideline 2.1 - Information Needed问题,并提供解决方案,以确保您的应用程序能够通过审核…

ansible的脚本—playbook剧本

一、playbook 1、简介 Playbook 剧本是由一个或多个play组成的列表。 play的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。 Task实际是调用ansible的一个module,将多个play组织在一个playbook中,即可以让它…

系列十一(面试)、如何查看JVM的参数?

一、查看JVM的参数 1.1、概述 上篇文章介绍了JVM的参数类型,通过jinfo可以查看JVM的默认参数,本章介绍另外一种查看JVM参数的方式。 1.2、 分类 JVM中提供了三种方式查看JVM的参数信息,这三种方式又分为两类,即:查看默…

安防监控EasyCVR平台如何通过api接口设置实时流的sei数据实现画框等操作?

国标GB28181视频监控系统EasyCVR平台采用了开放式的网络结构,支持高清视频的接入和传输、分发,能提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0…

(PC+WAP)装修设计公司网站模板 家装公司网站源码下载

(PCWAP)装修设计公司网站模板 家装公司网站源码下载 PbootCMS内核开发的网站模板,该模板适用于装修设计、家装公司类等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; PCWAP,同一个后台&#xff0c…

贪吃蛇(一)

ncurses的使用 这是是用于改善用户交互的一个库,做到即时响应。 它的基本使用,涉及到两个函数initscr、endwin,涉及到键盘输入的交互,就需要使用到keypad函数。 基本用法 #include"curses.h" int main() {int key;in…

ubuntu推送本地仓库到coding

本教程提供在ubuntu系统下推送本地仓库到coding的指令,用于查阅 一、主要步骤有: 0.初始化仓库 git init 1.添加远程仓库 git remote add origin https://coding.git #修改自己仓库链接 (命名仓库别名为origin) 2.提交代码…

Ansible:模块2

1,command模块 一般用于执行linux的命令,不支持管道符和重定向。 2,shell模块 相当于command的升级版,也可以执行linux命令,支持管道符和重定向 3,cron 模块 在远程主机生成定时任务 分 时 日 月 周 m…

多级缓存:亿级流量的缓存方案

文章目录 一.多级缓存的引入二.JVM进程缓存三.Lua语法入门四.多级缓存1.OpenResty2.查询Tomcat3.Redis缓存预热4.查询Redis缓存5.Nginx本地缓存6.缓存同步 一.多级缓存的引入 传统缓存的问题 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未…

存储:windows 10 硬盘盒 新盘 SSD分区

1.准备好绿联2.5英寸 2.准备好 SSD 磁盘 3.接入硬盘和盒子 4.win10 电脑 win x 然后选择磁盘管理 (磁盘管理 K) 5.它会提示需要初始化的一个新的磁盘,确定初始化 6.添加卷 7.命名盘符 8.检测是否识别到盘符 9.end

【学习笔记】部署yolov8到安卓手机

一、环境配置和源码安装 首先你需要配置好pytorch环境,本文不再详细阐述,若未配置好环境,可以参考我的另一篇博客:https://blog.csdn.net/liujiahao123987/article/details/128743017 yolov8的安装可参考:https://blog…

【C语言 | 内存管理】野指针、静态区、堆、栈、常见的内存错误及对策

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

【MATLAB源码-第101期】基于matlab的蝙蝠优化算BA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 蝙蝠算法(BA)是一种基于群体智能的优化算法,灵感来源于蝙蝠捕食时的回声定位行为。这种算法模拟蝙蝠使用回声定位来探测猎物、避开障碍物的能力。在蝙蝠算法中,每只虚拟蝙蝠代表…

软件测试实现Finddler的手机抓包过程

Fiddler的手机抓包过程 1、启动Fiddler 打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler Options”对话框: 2、在Fiddler Options”对话框 切换到“Connections”选项卡,然后勾选“Allow romote computers to connect”后面的复选…

UE5 C++(七)— UObject、UGameInstance实例化

文章目录 UObject实例化创建一个MyObject类在Default Pawn Class 中实现MyObject中参数调用 UGameInstance实例化创建GameInstance UObject实例化 创建一个MyObject类 在Default Pawn Class 中实现 注意:要实现运行时调用可在这里提前配置,具体参考之前…

(数据结构)单链表的插入删除

代码实现 #include<stdio.h> #include<stdlib.h> typedef struct LNode {int data;struct LNode* next; }LNode, * LinkList; //创建头结点 LNode* InitList(LinkList L) {L (LNode*)malloc(sizeof(LNode));if (L NULL){printf("申请头结点失败\n");…

公共字段自动填充——后端

场景&#xff1a;当处理一些请求时&#xff0c;会重复的对数据库的某些字段进行赋值&#xff08;如&#xff1a;在插入和更新某个物品时&#xff0c;需要更新该物品的更新时间和更新者的信息&#xff09;&#xff0c;这样会导致代码冗余。 如&#xff1a; 思路&#xff1a; 自…

【经典LeetCode算法题目专栏分类】【第2期】组合与排列问题系列

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 组合总和1 class So…

脉冲水表计量方法有哪些?

随着社会的发展和人们对资源的需求不断增长&#xff0c;水资源的有效利用显得尤为重要。而水表作为测量家庭和工业用水的关键设备&#xff0c;其准确性和稳定性对于水资源管理至关重要。本文将重点介绍水表脉冲数计量方法&#xff0c;以帮助读者更好地理解和应用水资源。 一、机…