BeginCTF 2024(新生赛道)WP-P1sc3s007

1. xor

算法不复杂,就是大量的异或,慢慢还原就好

a1 = 6329079420771558
a2 = 7679621386735000
a3 = flag前16
a4 = flag后16
a3和a2逐位异或
a4和a1逐位异或
a3   a1               
a4   a2                

a3和a2倒序异或
a4   a1
a3   a1
a4   a2

a5前16=a4
a5后16=a3
a6 = 4180387362590136
a7 = 3092606632787947

a8 = a5前16
a9 = a5后16
a8和a7逐位异或
a9和a6逐位异或

a8^a6
a9^a7
a8^a7倒序
a9^a6倒序

a8^a6倒序
a9^a7倒序
enc前16 = a9
enc后16 = a8

enc = `agh{^bvuwTooahlYocPtmyiijj|ek'p
#include<stdio.h>
int main()
{
    char enc[] = "`agh{^bvuwTooahlYocPtmyiijj|ek'p";
    char a9[16] = { 0 };
    char a8[16] = { 0 };
    char a7[16] = "4180387362590136";
    char a6[16] = "3092606632787947";
    char a5[32] = { 0 };
    char a4[16] = { 0 };
    char a3[16] = { 0 };
    char a2[16] = "7679621386735000";
    char a1[16] = "6329079420771558";
    char flag[32] = { 0 };
    int i, j, k, m;

    for (m = 0; m < 16; ++m)
    {
        a8[m] = enc[m + 16];
    }
    for (k = 0; k < 16; ++k)
    {
        a9[k] = enc[k];
    }
    for (j = 0; j < 16; ++j)
    {
        a9[j] ^= a7[16 - j];
    }
    for (i = 0; i < 16; ++i)
    {
        a8[i] ^= a6[16 - i];
    }
    for (m = 0; m < 16; ++m)
    {
        a9[m] ^= a6[16 - m];
    }
    for (k = 0; k < 16; ++k)
    {
        a8[k] ^= a7[16 - k];
    }
    for (j = 0; j < 16; ++j)
    {
        a9[j] ^= a7[j];
    }
    for (i = 0; i < 16; ++i)
    {
        a8[i] ^= a6[i];
    }
    for (m = 0; m < 16; ++m)
    {
        a9[m] ^= a6[m];
    }
    for (k = 0; k < 16; ++k)
    {
        a8[k] ^= a7[k];
    }
    for (j = 0; j < 16; ++j)
    {
        a5[j + 16] = a9[j];
    }
    for (i = 0; i < 16; ++i)
    {
        a5[i] = a8[i];
    }
    for (j = 0; j < 16; ++j)
    {
        a3[j] = a5[j + 16];
    }
    for (i = 0; i < 16; ++i)
    {
        a4[i] = a5[i];
    }
    for (m = 0; m < 16; ++m)
    {
        a4[m] ^= a2[16 - m];
    }
    for (k = 0; k < 16; ++k)
    {
        a3[k] ^= a1[16 - k];
    }
    for (j = 0; j < 16; ++j)
    {
        a4[j] ^= a1[16 - j];
    }
    for (i = 0; i < 16; ++i)
    {
        a3[i] ^= a2[16 - i];
    }
    for (m = 0; m < 16; ++m)
    {
        a4[m] ^= a2[m];
    }
    for (k = 0; k < 16; ++k)
    {
        a3[k] ^= a1[k];
    }
    for (j = 0; j < 16; ++j)
    {
        a4[j] ^= a1[j];
    }
    for (i = 0; i < 16; ++i)
    {
        a3[i] ^= a2[i];
    }
    for (m = 0; m < 16; ++m)
    {
        flag[m + 16] = a4[m];
    }
    for (k = 0; k < 16; ++k)
    {
        flag[k] = a3[k];
    }
    printf("%s", flag);
//flag{Virus_gonna_be_terminated!}

也可以动调,更快,异或是可逆的,密文输进去跑一遍就有明文

2. real check in

base一把梭

3. real checkin xor
#chal wp
def verify_func(ciper,key):
    encrypted = []
    for i in range(len(ciper)):
        encrypted.append(ciper[i]^ord(key[i%len(key)]))
    return encrypted
secret = [7, 31, 56, 25, 23, 15, 91, 21, 49, 15, 33, 88, 26, 48, 60, 58, 4, 86, 36, 64, 23, 54, 63, 0, 54, 22, 6, 55, 59, 38, 108, 39, 45, 23, 102, 27, 11, 56, 32, 0, 82, 24]
key = "ez_python_xor_reverse"
flag0 = verify_func(secret,key)
flag = ''
for i in flag0:
    flag += chr(i)
print(flag)
#begin{3z_PY7hoN_r3V3rSE_For_TH3_Be9inNEr!}
4. 俄语学习
rus = нечегонечегонечего
key1 = key = rus -114
//rc4init(s,key,keylen)
key2 = flag + key1 -112 (取最短)
//rc4_encrypt(s,key2,key2len)
str1 = +i&[@Y:g8[&l$f8S8v$Y&e>{
//rc4_encrypt(s,str1,str1len)
key2 = str1

几个问答全都没用,看中间关键的几个加密函数

中间涉及到rc4,但是最后用于比对的key2和str1经过同一个S盒的RC4加密,等于没加密

几个长得像key的几个字符串是有用的,排除干扰之后逻辑非常简单

#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char rus[38] = "нечегонечегонечего";//37
    char key2[26] = "+i&[@Y:g8[&l$f8S8v$Y&e>{";//25
    char key1[38] = { 0 };//37
    char flag[26] = { 0 };
    for (i = 0; i <= strlen(rus); ++i)
        key1[i] = rus[i] - 114;
    printf("%s   %d", key1, strlen(key1));//5m5d5w5d5b5n5m5d5w5d5b5n5m5d5w5d5b5n 37
    for (i = 0; i <= strlen(key2); ++i)
        flag[i] = key2[i] - key1[i] + 112;
    printf("%s", flag);//flag{Russian_is_so_easy}
    return 0;
}
5. 红白机

脑洞题……原本在手搓,但实际上只要找一个编译器跑一遍就可以

Easy 6502

6. ezpython

卡版本很恶心,必须下载python3.8再使用pyinstxtractor.py才能提取出作者自定义的一些文件

from gmssl import sm4
from secret import key, enc
import base64
 
def pad_pkcs7(data):
    """PKCS#7填充"""
    padding_len = 16 - len(data) % 16
    padding = bytes([padding_len] * padding_len)
    return data + padding
 
 
def unpad_pkcs7(padded_data):
    """PKCS#7去填充"""
    padding_len = padded_data[-1]
    return padded_data[:-padding_len]
 
 
class SM4:
 
    def __init__(self):
        self.gmsm4 = sm4.CryptSM4()
 
    def encryptSM4(self, encrypt_key, value):
        gmsm4 = self.gmsm4
        gmsm4.set_key(encrypt_key.encode(), sm4.SM4_ENCRYPT)
        padded_value = pad_pkcs7(value.encode())
        encrypt_value = gmsm4.crypt_ecb(padded_value)
        return base64.b64encode(encrypt_value)
 
 
if __name__ == '__main__':
    print('请输入你的flag:')
    flag = input()
    sm4_instance = SM4()
    flag_1 = sm4_instance.encryptSM4(key, flag)
    if flag_1 != enc:
        print('flag错误!!')
    else:
        print('恭喜你获得flag😊😀')

发现key,enc在secret文件里,路径是ezpython.exe_extracted\PYZ-00.pyz_extracted

key = 'BeginCTFBeginCTF'
enc = b'JmjJEAJGMT6F9bmC+Vyxy8Z1lpfaJzdEX6BGG/qgqUjUpQaYSON1CnZyX9YXTEClSRYm7PFZtGxmJw6LPuw1ww=='

还是解不出来,看一下引用的sm4(ezpython.exe_extracted\PYZ-00.pyz_extracted\gmssl)和库里默认的sm4是不是有魔改(\lib\site-packages\gmssl\__pycache__

偷偷加了一行异或

解密的时候记得异或一下key就可以了

#ezp
from gmssl import sm4
import base64
def pad_pkcs7(data):
    """PKCS#7填充"""
    padding_len = 16 - len(data) % 16
    padding = bytes([padding_len] * padding_len)
    return data + padding
def unpad_pkcs7(padded_data):
    """PKCS#7去填充"""
    padding_len = padded_data[-1]
    return padded_data[:-padding_len]
class SM4:

    def __init__(self):
        self.gmsm4 = sm4.CryptSM4()

    def decryptSM4(self, decrypt_key, value):
        gmsm4 = self.gmsm4
        gmsm4.set_key(decrypt_key.encode(), sm4.SM4_DECRYPT)
        padded_value = pad_pkcs7(value)
        decrypt_value = gmsm4.crypt_ecb(padded_value)
        return decrypt_value
key0 = 'BeginCTFBeginCTF'
key = ''
for i in key0:
    key += chr(ord(i)^37)

enc = b'JmjJEAJGMT6F9bmC+Vyxy8Z1lpfaJzdEX6BGG/qgqUjUpQaYSON1CnZyX9YXTEClSRYm7PFZtGxmJw6LPuw1ww=='
sm4_instance = SM4()
flag = sm4_instance.decryptSM4(key, base64.b64decode(enc))
print(flag)
#flag{Pay_M0re_@ttention_to_th3_key!!}

7. where is crazyman v1.0

谷歌地图搜一下,或者直接猜二次元圣地

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CTFshow web(命令执行29-36)

?ceval($_GET[shy]);&shypassthru(cat flag.php); #逃逸过滤 ?cinclude%09$_GET[shy]?>&shyphp://filter/readconvert.base64-encode/resourceflag.php #文件包含 ?cinclude%0a$_GET[cmd]?>&cmdphp://filter/readconvert.base64-encode/…

数据结构——顺序表详解

目录 前言 一.线性表 1.概念 二.顺序表 1.概念 2.分类 2.1静态顺序表 2.2动态顺序表 前言 数据结构是计算机存储、组织数据的方式. 一.线性表 1.概念 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列.线性表是一种在实际中广泛使用的…

Windows Server 2019 DHCP服务器搭建

系列文章目录 目录 系列文章目录 文章目录 前言 一、DHCP服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 1)实验服务器配置和客户端 2)实验环境 2.服务器配置 ​编辑 文章目录 Windows Server 2003 Web服务器搭建Windows Server 2003 FTP服务器搭建Windows S…

【iOS ARKit】人形遮挡

人形遮挡简介 在 AR系统中&#xff0c;计算机通过对设备摄像头采集的图像进行视觉处理和组织&#xff0c;建立起实景空间&#xff0c;然后将生成的虚拟对象依据几何一致性原理嵌入到实景空间中&#xff0c;形成虚实融合的增强现实环境&#xff0c;再输出到显示系统中呈现给使用…

CoreSight学习笔记

文章目录 1 Components1.1 ROM Table 2 使用场景2.1 Debug Monitor中断2.1.1 参考资料 2.2 Programming the cross halt2.2.1 编程实现2.2.2 参考资料 2.3 CTI中断2.3.1 编程实现2.3.1.1 准备工作2.3.1.2 触发中断2.3.1.3 中断响应 2.3.2 参考资料 1 Components 1.1 ROM Table…

人体生物钟程序设计(C语言)

前几年在本站发布过博文介绍人体生物钟程序的制作方法。后来发现上传后显示的博文有错漏&#xff0c;计算符号脱漏。这会误导读者。今修订整理重新发布&#xff0c;展示一下漂亮的界面设计。 人体生物钟也就是人体生物节律。人体生物节律是自然进化赋予生命的基本特征之一&…

Docker(2)

Docker Docker数据卷挂载常用命令 注意&#xff1a;容器与数据卷的挂载要在创建容器时配置&#xff0c;对于创建好的容器&#xff0c;是不能设置数据卷的。而且创建容器的过程中&#xff0c;数据卷会自动创建。建容器并指定数据卷&#xff0c;注意通过 -v 参数来指定数据卷&am…

【iOS ARKit】人形提取

为解决人形分离和深度估计问题&#xff0c;ARKit 新增加了 Segmentation Buffer&#xff08;人体分隔缓冲区&#xff09;和Estimated Depth Data Buffer&#xff08;深度估计缓冲区&#xff09;两个缓冲区。人体分隔缓冲区作用类似于图形渲染管线中的 Stencil Buffer&#xff0…

洛谷C++简单题小练习day9—[AHOI2017]寻找探监点

day9--[AHOI2017]寻找探监点--2.7 习题概述 题目描述 一个nn 的网格图&#xff08;标号由 1,1 开始&#xff09;上有 m 个探测器&#xff0c;每个探测器有个探测半径 r &#xff0c;问这 nn 个点中有多少个点能被探测到。 输入格式 第一行 3 个整数 n,m,r。 接下来 m 行&…

国内首个openEuler师训营圆满结营! 麒麟信安助力培养国产操作系统高质量师资人才

2024年1月22日&#xff0c;全国首个openEuler师训营圆满结营&#xff01;旨在深化产教融合&#xff0c;加速开源教育走进高校&#xff0c;提高师资队伍openEuler专业能力及实践教学水平。 本次师训营由长沙市大数据产业链、长沙市新一代自主安全计算系统产业链指导&#xff0c…

【Docker】Docker Image(镜像)

文章目录 一、Docker镜像是什么&#xff1f;二、镜像生活案例三、为什么需要镜像四、镜像命令详解docker rmidocker savedocker loaddocker historydocker image prune 五、镜像操作案例六、镜像综合实战实战一、离线迁移镜像实战二、镜像存储的压缩与共享 一、Docker镜像是什么…

顺序表、链表相关OJ题(2)

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、旋转数组&#xff08;力扣&#xff09; 经典算法OJ题&#xff1a;旋转数组 思路1&#xff1a;每次挪动1位&#xff0c;右旋k次 时间复杂度&#xff1a;o(N^2) 右旋最好情况&#xff1a;k是n的倍数…

naiveui 上传图片遇到的坑 Upload

我在开发图片上传功能, 需要手动触发上传 但是我调用它内部自定义submit方法, 结果接口一直在报错400 我反反复复的测试了好就, 确定了就是我前端的问题,因为之前一直在做后端的错误排查, 以为是编译问题(因为之前也出现过这个问题) 好 , 我把其中一个参数类型改为String类型, …

c++设计模式之装饰器模式

作用 为现有类增加功能 案例说明 class Car { public:virtual void show()0; };class Bmw:public Car { public:void show(){cout<<"宝马汽车>>"<<endl;} };class Audi:public Car { public:void show(){cout<<"奥迪汽车>>&q…

Java玩转《啊哈算法》解密回文之栈

菩萨清凉月&#xff0c;常游毕竟空&#xff0c;众生心垢净&#xff0c;菩提影现中。 这目录 这开头这代码地址栈案例代码优化建议类似扩展 这开头 各位女士们&#xff0c;先生们好&#xff01;本人最近在看《啊哈算法》&#xff0c;这本书写的确实还可以&#xff0c;很有趣味性…

代码随想录算法训练营第28天 | 93.复原IP地址 ,78.子集 ,90.子集II

回溯章节理论基础&#xff1a; https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 93.复原IP地址 题目链接&#xff1a;https://leetcode.cn/problems/restore-ip-addresses/ 思路&#xff1a; 这是切割问题&am…

2024年2月8日 十二生肖 今日运势

小运播报&#xff1a;2024年2月8日&#xff0c;星期四&#xff0c;农历腊月廿九 &#xff08;甲辰年丙寅月壬寅日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;马、猪、狗 需要注意&#xff1a;龙、蛇、猴 喜神方位&#xff1a;正南方 财神方位&#xff1a;正…

基于swing和cf的推荐相似度SQL实现

对于cf和swing算法的介绍可以参考ItemCF的演进&#xff1a;狭义 VS 广义 基于cf的推荐相似度 这里介绍这样一个场景&#xff0c;我们有了大量的电商购买数据&#xff0c;希望通过cf算法计算不同的类目之间的相似度&#xff0c;以方便对用户购买进行兴趣探索。 使用SQL实现需要…

10.0 Zookeeper 权限控制 ACL

zookeeper 的 ACL&#xff08;Access Control List&#xff0c;访问控制表&#xff09;权限在生产环境是特别重要的&#xff0c;所以本章节特别介绍一下。 ACL 权限可以针对节点设置相关读写等权限&#xff0c;保障数据安全性。 permissions 可以指定不同的权限范围及角色。 …

【STL】:priority_queue介绍和模拟实现

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关priority_queue的使用&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…
最新文章