[BaseCTF 2024] 高校联合新生赛 Crypto (week1-7)

半个月没有落笔了。又到开学季,老油条们又在教新生了。题目很多,本想过于简单就不提交了,可以总是想起去年,到最后总是忘掉哪个作了哪个没作,也挺乱的。这回一共有7周呢,而且有的比赛题目居然不按周排序。

Base每周结束后都会放官方WP,能拿自己的跟官方的借鉴一下也好。每周结束后会更新。

week1

ez_math/mid_math

import numpy as np
from Crypto.Util.number import *a, b, c, d = [getPrime(128) for _ in range(4)]
point1 = a * d
point2 = b * c
matrix2 = [[0, a, b], [0, c, d]]flag = b"flag{test_flag}"
flag = bytes_to_long(flag)def randomArray():upper = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]low = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]for i in range(3):for j in range(i+1, 3):upper[i][j] = getPrime(128)low[j][i] = getPrime(128)result = np.array(upper) @ np.array(low)return resultA = np.array([[flag, 0, 0]] + matrix2)
B = randomArray()
C = randomArray()
MAT = C @ A @ B

也算是作出来了,一看WP,居然没想到行列式。官方是这样的 因为B=Bupper*Blow 所以|B|=|Bupper|*|Blow|=1所以|MAT|=|A|*|B|=|A|=flag*(ad-bc)=flag*(hint1-hint2) 两题一样,因为mid_math的左边也是1

long_to_bytes(det(matrix(MAT))//(ponit1-point2))

我用了个麻烦的办法,主要是考虑到这些素数长度区别很大,所以可以一个个求出来。(第1个可以直接gcd,这里说第2个)

 5个矩阵相乘,先把因子都列出来,写到线上得一整张。

'''|1 u1 u2|      |1  0  0|      |f  0  0|  
u = |0  1 u3|  l = |l1 1  0|  A = |0  a  b|  |0  0  1|      |l2 l3 1|      |0  c  d|  C*B*A = CB*Au*Al == M
(CB*Au)*Al == M 
|a11 a12 a13| |1  0  0|   |a11+a12*l1+a13*l2 a12+a13*l3 a13|
|a21 a22 a23|*|l1 1  0| = |a21+a22*l1+a23*l2 a22+a23*l3 a23|
|a31 a32 a33| |l2 l3 1|   |...               ...        a33|
'''

他们规模都一样,都是128位,所以M[0,1]/M[0,2]约为l3由于l3是质数,小爆破一下得到素数即可。一般修正0或1就行。这样一个个把l求出来,就得5个的积就能少一个,然后再求个u,就回到第1题,用gcd就能求flag。

本来这个方法不大好,但考虑到还有下周。总不能下周也用det吧。 

babypack

from Crypto.Util.number import *
import random
flag=b'BaseCTF{}'
m=bytes_to_long(flag)
bin_m=bin(m)[2:]
length=len(bin_m)a=[1]
sum=1
for i in range(length-1):temp=random.randint(2*sum+1,4*sum)sum=sum+tempa.append(temp)a=a[::-1]
c=0
for i in range(length):if bin_m[i]=='1':c=c+a[i]
print("a=",a)
print("c=",c)

超增序列,从大到小够减就加‘1’减掉,不够次就加‘0’

from output import *b=''
for i in a:if c>=i:c-=i b+='1'else:b+='0'print(len(b))
b = '0'+b
print(''.join([chr(int(b[i:i+8],2)) for i in range(0,len(b),8)]))
#BaseCTF{2c4b0c15-3bee-4e4a-be6e-0f21e44bd4c9}

babyrsa 

单因子

long_to_bytes(pow(c,invert(e,n-1),n))

十七倍 

给的是m*17%256 下拉乘逆

bytes([i*invert(17,256)&0xff for i in enc])

helloCrypto

 给了密钥的AES,直接解密

AES.new(key=long_to_bytes(key1),mode=AES.MODE_ECB).decrypt(c)

ez_rsa

 给了(p+2)*(q+2),实际上是给了p+q,可以用z3求解,也可以直接用p+q来求真正的phi

phi=(p-1)(q-1)=n-(p+q)+1 

你会算md5吗

给了一堆单字符的md5值,弄个字典,这典这东西比单字符爆破强,至少从编程的思想上更好

dic = [hashlib.md5(bytes([i])).hexdigest() for i in range(128)]
bytes([dic.index(i) for i in output])

week2

week3

week4

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

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

相关文章

CART决策树-基尼指数(全网最详解)

文章目录 一、基尼指数的定义二、基尼指数在CART决策树中的应用三、基尼指数与CART决策树的构建1.计算每个子集的基尼系数:2.计算基尼指数3.选择最优特征4.其余基尼指数5.构建决策树 四、总结 CART决策树基尼指数是CART(Classification And Regression T…

计算机网络参考模型

一、OSI七层参考模型(ISO——国际标准化组织) 应用层:为应用进程提供网络服务,例如你在qq输入几个字符表示层:数据的表示,安全,压缩(把人的语言翻译成计算机能识别的语言&#xff09…

[C语言]-基础知识点梳理-文件管理

前言 各位师傅们好,我是qmx_07,今天给大家讲解文件管理的相关知识,也就是常见的 读取,删除一类的操作 文件 为什么要使用文件? 程序的数据是存储在电脑的内存中,如果程序退出,内存回收&…

Godot自定义快捷键(配置视图快捷键)

如图 这个没啥技术,但是配置快捷键的时候有讲究如图 选择万国码并且将前后左右下上(顶底)分别配置为123456。汝等自管记好,今后自有妙用(哈哈)效果如图

AC 自动机查漏补缺

推荐在 cnblogs 上阅读 AC 自动机查漏补缺 前言 今年 1 月份学过一次,当时自以为掌握得很好,实际上就是依托答辩。而且还有很多地方是有严重误导性的。所以这篇查漏补缺就是记录一下自己对 AC 自动机尚不完全掌握的地方。并对之前的那篇不太正确的题解…

解决电脑突然断网没网,以太网无网络访问权限,本地连接时出错:地址仍未与网络终结点关联

帮同事处理网络问题,尝试了拔插网线,重启电脑,禁用启用以太网,都没有解决。 于是在**命令提示符(cmd)**中执行命令: ipconfig /release 按回车执行后,返回提示:本地连接时出错:地址…

什么是GD32 MCU读保护?

如今电子产品市场风云变幻,暗流汹涌,有没有小伙伴遇到自己费了大力气写出来的代码,很容易就被别人“借鉴”了,真的是让闻者伤心,听着落泪啊。 那有没有什么方法可以防止别人将你的代码从MCU读出来呢?答案当…

大众点评2024年6月全国全分类店铺基础信息数据库

大众点评的采集在2023年之前还是比较好采集的,很多接口不需要登录,即使登录一个帐号也可以采集很多,所以大约2023年8月以前的大众点评店铺字段非常丰富,几乎所有常见店铺字段都能采集。 2023年8月以后,大量接口权限变…

远程消息传递的艺术:NSDistantObject在Objective-C中的妙用

标题:远程消息传递的艺术:NSDistantObject在Objective-C中的妙用 引言 在Objective-C的丰富生态中,NSDistantObject扮演着至关重要的角色,特别是在处理分布式系统中的远程消息传递。它允许对象之间跨越不同地址空间进行通信&…

网安新声 | 网易云音乐崩了:网络安全如何守护在线体验

网安加社区【网安新声】栏目,汇聚网络安全领域的权威专家与资深学者,紧跟当下热点安全事件、剖析前沿技术动态及政策导向,以专业视野和前瞻洞察,引领行业共同探讨并应对新挑战的策略与可行路径。 8月19日,#网易云音乐崩…

企业高性能web服务器【Nginx详解】

一.Web 服务基础介绍 1.1 互联网发展历程 1993年3月2日,中国科学院高能物理研究所租用AT&T公司的国际卫星信道建立的接入美国SLAC国家实 验室的64K专线正式开通,成为我国连入Internet的第一根专线。 1995年马云开始创业并推出了一个web网站 中国黄页…

VAuditDemo安装漏洞

目录 VAuditDemo安装漏洞 index.php header.php config.php lib.php install.php 分析结果 漏洞利用 第一步:删除install.lock文件,访问 install.php 抓包 第二步:通过审计构造payload 第三步:修改抓包请求内容&#x…

异常在代码中的两个作用

一.异常的作用: 作用一:异常是用来查询bug的关键参考信息。 作用二:异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况。 二.举例: 例1: 一个JavaBean类: package com.itheima.a01MyExpection;public class Student { private String name; private int…

【极限性能,尽在掌控】ROG NUC:游戏与创作的微型巨擘

初见ROG NUC,你或许会为它的小巧体型惊讶。然而,这看似不起眼的机身内,蕴藏着游戏、创意的强大能量。 掌中风暴,性能无界 ROG NUC搭载英特尔高性能处理器,配合高速NVMe SSD固态硬盘以及可选的高端独立显卡&#xff08…

“解决Windows电脑无法投影到其他屏幕的问题:尝试更新驱动程序或更换视频卡“

目录 背景: 解决方法1: 解决方法2: 什么是驱动程序: 背景: 今天在日常的工作中, 我想将笔记本分屏到另一个显示屏,我这电脑Windows10系统,当我按下Windows键P键,屏幕信息上提示我"你的电脑不能投影到其他屏幕…

mybatis-plus使用saveOrUpdateBatch函数时数据库中已存在对应id数据,但报错插入时出现重复键

1. 问题背景 ProgramLang pl4 new ProgramLang(); // pl4.setId(100L).setLangName("YY").setDescription("Drama2");pl4.setId(100L);pl4.setLangName("YY");pl4.setDescription("Drama2");List<ProgramLang> updatedE…

调研在深度学习中如何读代码

这里调研了四个up主的内容&#xff0c;对他们讲的内容摘了一下主要的内容。想要看原文的画可以看原篇。 1.如何学习别人的代码&#xff08;代码量较大时&#xff09;_怎么学习别人的代码-CSDN博客 想要掌握的好&#xff0c;光阅读是不够的&#xff0c;一定要动手写、训练模型…

STM32学习9

USART串口协议 通信接口 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 串口通信 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使…

python 可迭代,迭代器,生成器,装饰器

1. 可迭代&#xff08;Iterable&#xff09; 可迭代 是指一个对象可以返回一个迭代器的对象。也就是说&#xff0c;它实现了 __iter__() 方法或 __getitem__() 方法。常见的可迭代对象有列表、元组、字符串、字典和集合。 from collections.abc import Iterablei 100 s &qu…

echo “Hello, UDP!“ | nc -u -w1 192.168.1.100 1234 里面有换行符

当你使用echo命令时&#xff0c;默认情况下会包含一个换行符&#xff08;\n&#xff09;&#xff0c;这可能会导致你的UDP数据包包含额外的字符。如果你想确保发送的数据不包含换行符&#xff0c;可以使用printf命令&#xff0c;因为它允许你更精确地控制输出的内容。 下面是修…