ESCTF-密码赛题WP

*小学生的爱情*

Base64解码获得flag

0e7e46464839891b199dc2b475d2ce97.png

*中学生的爱情*

社会主义核心价值观在线解码得到flag

http://www.atoolbox.net/Tool.php?Id=850

*高中生的爱情*

U2FsdG开头为rabbit密码,又提示你密钥为love。本地toolfx密码工具箱解密。不知道为什么在线解密不行。

0aee7872ad075155f4bf3fb815ee8212.png 453b5b2b74262345d955020e490b8b80.png

*大学生的爱情*

RSA经典题目。p和q相近。所以p和q都在根号n附近。利用yafu工具可以快速分解。

​ print(m)

if b’}’ in m:

2eb3378d211c694267cbda7eafa83c3b.png

然后按照常规RSA解密方法解密。

# -- coding:utf-8 --

“”"

作者:Wang Xinwei

日期:2024年03月24日

“”"

import gmpy2

from Crypto.Util.number import *

flag = b"ESCTF{ESCTF{RSA_is_funny}}"

e = 65537

# p = getPrime(512)

# q= gmpy2.next_prime§

# n = p*q

# flag = bytes_to_long(flag)

# print(“n=”,n)

# print(“c=”,pow(flag,e,n))

n= 87254900731666390884159209626800356941785001488525028591769229485924739081602066332966326665723327730641614285135512192017583701591135917500641570064083902206611923810507034233576256144022964882158178811976242807609586302888952567775205131598018225511164558967215597973206810360256277874273106458003025660413

c= 1923721988386660054359926820655269448778767748309860489866383200366095142690520062399782483000966795116503564066444275987756271219973359161455872735303102581691939422025939521785848668195964077055819184084424817164624658309707329849413844319960704177703085691752420300231366661259420651913926188761637950330

#yafu分解

p= 9341033172602824606894341736533287160404224130835180730745999603156252793202779809792247727309047140672750893886744443371092448221030199795677817036457241

q = 9341033172602824606894341736533287160404224130835180730745999603156252793202779809792247727309047140672750893886744443371092448221030199795677817036457093

d=inverse(e,(p-1)*(q-1))

print(long_to_bytes(pow(c,d,n)))

*研究生的爱情*

RSA经典题目共模攻击

f5b2163c0490e2d00c49bf8102e9d358.png

以下是通用RSA共模攻击脚本

# -- coding:utf-8 --

“”"

作者:Wang Xinwei

日期:2023年12月25日

“”"

from Crypto.Util.number import *

#e互质

def crack(c1,c2,e1,e2,n):

r, s, _ = edge(e1, e2)

if r < 0:

​ r = -r

​ c1 = inverse(c1, n)

else:

​ s = -s

​ c2 = inverse(c2, n) # 取逆元

m = pow(c1, r, n) * pow(c2, s, n) % n

return m

def edge(a,b):

u,u1=1,0

v,v1=0,1

while b:

​ q,r=divmod(a,b) #返回除数和商

​ u,u1=u1,u-q*u1

​ v,v1=v1,v-q*v1

​ a,b=b,r

return u,v,a

m=crack(c1,c2,e1,e2,n)

print(long_to_bytes(m))

*密码不能设的太简单了*

Wjw20041333

*0xff*

除了异或还有与啊,每个数与0xff,相与范围在0–255

a=[13637,48723,27715,29268,29766,40571,22380,35183,1399,19039,8805,42089,43367,1896,9844,19295,25193,10355,56159,52582,62060,62305,31079,36733]

for i in a:

print(chr(i&0xff),end=“”)

*base64_roll16*

简单的脚本

# -- coding:utf-8 --

“”"

作者:Wang Xinwei

日期:2024年03月21日

“”"

from base64 import b64encode,b64decode

with open(“task.txt”,“rb”) as f:

for i in range(16):

​ flag = b64decode(flag)

print(flag)

*我儿王腾,有大帝之姿*

凯撒暴力破解

9e470d1706654aa2a2aa023e5a58c661.png

*md5_crack*

# -- coding:utf-8 --

“”"

作者:Wang Xinwei

日期:2024年03月21日

“”"

import hashlib

#ps,这道题是为了让你学习python编写代码,一起加油吧,只有大写字母,预计需要爆破10分钟左右,这种暴力的题我推荐你用itertools里面的product和tqdm中的进度可视化tqdm。欢迎与我交流。

flag = “ESCTF{****SOPVNFDSFJEJFSLFKDVOPXC**L}”

print(hashlib.md5(flag.encode()).hexdigest())

#9cdfffd57b2e6e809e577105cd05c943

for i in product(string.ascii_uppercase,repeat=6):

s=“”.join(i)

tmp = “ESCTF{”+s[:4]+“SOPVNFDSFJEJFSLFKDVOPXC”+s[4:]+“L}”

if hashlib.md5(tmp.encode()).hexdigest() ==“9cdfffd57b2e6e809e577105cd05c943”:

​ print(tmp)

*Virgenene*

在线网站https://www.guballa.de/vigenere-solver直接破解

或者猜出密钥是ESCTF,本地toolsfx密码箱破解。

*被攻破的RSA*

f7c71585e56d805faf5fb4fbc3b7316f.png

*p中有q,q中有p*

费马小定理:如果p是一个质数,而整数a不是p的倍数,则有a(p-1)≡1(mod p)。( ap ≡ a(mod p) )

# -- coding:utf-8 --

“”"

作者:Wang Xinwei

日期:2024年03月22日

“”"

from Crypto.Util.number import *

e =65537

hint1= 9257190176211953944656429226191162921937539029882923390458633035600726340807763702464984476602750202337310848980059046379158262160314085592210157108172217

hint2= 12522536653306632457484965539025737173335741462514062756817436478300395511087417885672387705368503036128243365548253460553613771090473663920725930626070797

c= 75615441114824818982182953844155305965377036100598798618630333600571314511829375696945363055557959181559781415804471507055342868444659562871448832685669789754178889475898700223135742400451539802057653648819134357436154315541073534622583803117701704744407233906430183232086047950048037168491349071656221408613

d = inverse(e,(hint1-1)*(hint2-1))

print(long_to_bytes(pow(c,d,hint1*hint2)))

*初识RSA&MD5*

简单的求完d后再md5

import hashlib

from Crypto.Util.number import *

def crack(e,p,q):

phi = (p - 1) * (q - 1)

d = inverse(e, phi)

return d

if name == “main”:

p = 0x928fb6aa9d813b6c3270131818a7c54edb18e3806942b88670106c1821e0326364194a8c49392849432b37632f0abe3f3c52e909b939c91c50e41a7b8cd00c67d6743b4f

q = 0xec301417ccdffa679a8dcc4027dd0d75baf9d441625ed8930472165717f4732884c33f25d4ee6a6c9ae6c44aedad039b0b72cf42cab7f80d32b74061

e = 0x10001

d=crack(e,p,q)

print(hashlib.md5(str(d).encode()).hexdigest())

*unknown_e*

知道e的范围,在可爆破范围内,可以直接爆破。

# -- coding:utf-8 --

“”"

作者:Wang Xinwei

日期:2024年03月22日

“”"

import random

from Crypto.Util.number import *

from tqdm import tqdm

p= 114023460586166661531783881732905003157974360038162981519868224272334226248043

q= 107973851625536740682697827957048261479275714225294282772072383785133417395489

c= 5259262198642778184810466983247120863897320816825538032188414867552876235867257446291601783804008647953671522710535700007057756326626645320636324436096585

n=p*q

for e in tqdm(range(1<<17,1<<18)):

if not isPrime(e):

​ continue

d = inverse(e, (p - 1) * (q - 1))

m = long_to_bytes(pow(c,d,n))

if b’ESCTF’ in m:

​ print(m)

​ break

*impossible_rsa_revenge*

第一步,共模攻击变形。

知道e的范围,暴力破解两个e。得到flag1

for e1 in range(1<<10,1<<11):

for e2 in range(e1+1, 1 << 11):

​ m=RSA.common_n.crack(c1,c2,e1,e2,n)

​ m = long_to_bytes(m)

​ if b’ESCTF{’ in m:

​ print(str(m)[2:-1],end=“”)

​ break

if b’ESCTF{’ in m:

​ break

第二个用相同的p,q,e加密了100次,解密100次即可。

n=p*q

d = inverse(e,(p-1)*(q-1))

for i in (range(10000)):

m = pow(m,d,n)

print(str(long_to_bytes(m))[2:-1],end =“”)

第三步,用yafu将n分解成32个质数。都是10位的,如果不是,用yafu继续分。直到分成32个为止,放大一个列表里。最后计算欧拉函数,破解。

assert len(factor)==32

n = reduce(lambda a,b:a*b,factor)

phi = 1

for p in factor:

phi = phi*(p-1)

d = inverse(e,phi)

flag3 = long_to_bytes(pow(c,d,n))

print(str(flag3)[2:-1])

第四步:

只给了长整型的一部分。暴力破解,flag只透露了最后一个是},这是解题关键。

继续爆破。

hint = 2066689923305

for i in range(int(hint)*10000,int(hint)*10000+9999):

m = long_to_bytes(i)

if b’}’ in m:

​ print(m)

里。最后计算欧拉函数,破解。

assert len(factor)==32

n = reduce(lambda a,b:a*b,factor)

phi = 1

for p in factor:

phi = phi*(p-1)

d = inverse(e,phi)

flag3 = long_to_bytes(pow(c,d,n))

print(str(flag3)[2:-1])

第四步:

只给了长整型的一部分。暴力破解,flag只透露了最后一个是},这是解题关键。

继续爆破。

hint = 2066689923305

for i in range(int(hint)*10000,int(hint)*10000+9999):

m = long_to_bytes(i)

if b’}’ in m:

​ print(m)

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

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

相关文章

jira安装与配置

1. 环境准备 环境要求 1) JDK1.8以上环境配置 2) Mysql数据库5.7.13 3) Jira版本7及破解包 1.1 JDK1.8安装配置 1) 首先下载 JDK1.8&#xff0c; - 网址&#xff1a;https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html - windows64 版&am…

机器学习优化算法(深度学习)

目录 预备知识 梯度 Hessian 矩阵&#xff08;海森矩阵&#xff0c;或者黑塞矩阵&#xff09; 拉格朗日中值定理 柯西中值定理 泰勒公式 黑塞矩阵&#xff08;Hessian矩阵&#xff09; Jacobi 矩阵 优化方法 梯度下降法&#xff08;Gradient Descent&#xff09; 随机…

Pytorch的hook函数

hook函数是勾子函数&#xff0c;用于在不改变原始模型结构的情况下&#xff0c;注入一些新的代码用于调试和检验模型&#xff0c;常见的用法有保留非叶子结点的梯度数据&#xff08;Pytorch的非叶子节点的梯度数据在计算完毕之后就会被删除&#xff0c;访问的时候会显示为None&…

STM32CubeMX学习笔记28---FreeRTOS软件定时器

一、软件定时器简介 1 、基本概念 定时器&#xff0c;是指从指定的时刻开始&#xff0c;经过一个指定时间&#xff0c;然后触发一个超时事件&#xff0c;用户 可以自定义定时器的周期与频率。类似生活中的闹钟&#xff0c;我们可以设置闹钟每天什么时候响&#xff0c; 还能设置…

基于Python的商品评论文本情感分析

基于Python的商品评论文本情感分析通常涉及以下几个步骤&#xff1a; 1. 数据收集&#xff1a;首先&#xff0c;你需要收集商品评论数据。这些数据可以从网站、API或其他数据源获取。例如&#xff0c;你可以使用requests和BeautifulSoup库从网站抓取评论数据。 2. 数据预处理…

2024-03-28 Java8之Collectors类

Collectors类常用方法 文章目录 Collectors类常用方法1.toList、toSet、toMap2.joining、counting、summingInt、minBy3.groupingBy 1.toList、toSet、toMap Collector<T, ?, List<T>> toList(); //收集为List集合 Collector<T, ?, Set<T>> toSet()…

Unity | 工具类-UV滚动

一、内置渲染管线Shader Shader"Custom/ImageRoll" {Properties {_MainTex ("Main Tex", 2D) "white" {}_Width ("Width", float) 0.5_Distance ("Distance", float) 0}SubShader {Tags {"Queue""Trans…

2024.3.28学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p286-p294 继承 继承可以解决代码复用&#xff0c;让我们的编程更加靠近人类思维&#xff0c;当多个类存在相同的属性和方法时&#xff0c;可以从这些类中抽象出父类&#xff0c;在父类中定义这些…

22.C++中的原子操作

C中的原子操作 文章目录 C中的原子操作atomic_flagatomic<bool>atomic<T*>总结reference 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; C的原子操作也是为了解决多线程编程中同步的问题&#xff0c;它保证在执行原子操作时不…

Day24|回溯算法part01:理论基础、77. 组合

理论基础 回溯法&#xff0c;一般可以解决如下几种问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合切割问题&#xff1a;一个字符串按一定规则有几种切割方式子集问题&#xff1a;一个N个数的集合里有多少符合条件的子集排列问题&#xff1a;N个数…

记录数据库系统时间和服务器时间有差的问题

问题&#xff1a; 在本月开发的时候&#xff0c;有一个问题&#xff0c;就是数据库时间和服务器时间不一致导致定时任务计数一直有问题。 数据库时间别当前时间慢2分钟 服务器时间和当前时间一致 现象&#xff1a; 在我们操作一个业务的时候&#xff0c;操作完&#xff0c;要…

如何通过vscode连接到wsl

下载wsl扩展 远程连接模式

Java方法重写:超越继承的界限

引言&#xff1a; 在面向对象编程&#xff08;OOP&#xff09;的世界里&#xff0c;方法重写&#xff08;Overriding&#xff09;是一个强大的特性&#xff0c;它允许子类改变或扩展继承自父类的方法的行为。Java中的方法是面向对象设计的核心&#xff0c;而方法重写则是实现多…

go的通信Channel

go的通道channel是用于协程之间数据通信的一种方式 一、channel的结构 go源码&#xff1a;GitHub - golang/go: The Go programming language src/runtime/chan.go type hchan struct {qcount uint // total data in the queue 队列中当前元素计数&#xff0c;…

Unity中控制帧率的思考

如何控制帧率&#xff1a; 在Unity中&#xff0c;你可以通过设置Application.targetFrameRate来限制帧率。 例如&#xff0c;如果你想将帧率限制为16帧&#xff0c; 你可以在你的代码中添加以下行&#xff1a; Application.targetFrameRate 16; 通常&#xff0c;这行代码会放在…

专题二_滑动窗口(2)

目录 1658. 将 x 减到 0 的最小操作数 解析 题解 904. 水果成篮 解析 题解 1658. 将 x 减到 0 的最小操作数 1658. 将 x 减到 0 的最小操作数 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int minOperations(vector<int>& num…

题目 2906: 笨小猴

题目描述: 笨小猴的词汇量很小&#xff0c;所以每次做英语选择题的时候都很头疼。但是他找到了一种方法&#xff0c;经试验证明&#xff0c;用这种方法去选择选项的时候选对的几率非常大&#xff01; 这种方法的具体描述如下&#xff1a;假设maxn是单词中出现次数最多的字母的…

MPDataDoc类介绍

MPDataDoc类介绍 使用mp数据库新接口mp_api.client.MPRester获取数据&#xff0c;例子如下&#xff1a; from mp_api.client import MPResterwith MPRester(API_KEY) as mpr:docs mpr.summary.search(material_ids["mp-1176451", "mp-561113"])以上代码返…

Java抽象类详解:定义、特性与实例化限制(day12)

抽象类 总结一下今天老师上课的内容&#xff0c;前面几节课听得是有点懵&#xff0c;在讲到内存问题&#xff0c;也就是代码在栈、堆、以及方法区是怎么执行的&#xff0c;听得不是很懂&#xff0c;今天讲到抽象类以及重写的机制&#xff0c;似乎开始慢慢懂得了java的底层原理…

Linux应用实战之网络服务器(三)CSS介绍

0、前言 准备做一个Linux网络服务器应用实战&#xff0c;通过网页和运行在Linux下的服务器程序通信&#xff0c;这是第三篇&#xff0c;介绍一下CSS&#xff0c;优化上一篇文章中制作的HTML页面。 1、CSS常用语法 CSS&#xff08;层叠样式表&#xff09;是用于描述HTML或XML…