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://xiahunao.cn/news/2906342.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

lua脚本在redis集群中哈希槽分片问题

上文说到&#xff0c;通过用redis lua脚本实现时间窗分布式限流 可以操作redis lua脚本来实现时间窗限流&#xff0c;在执行lua脚本的时候&#xff0c;参数中有个keys列表&#xff0c;当lua脚本中如果有操作多个key的情况&#xff0c;就可以传个key列表了。通常情况下&#xff…

java 抠取红色印章(透明背景)

一个亲戚让我帮他把照片里的红色印章抠出来&#xff0c;&#xff0c;&#xff0c;记录下处理过程&#xff0c;代码如下&#xff0c;可直接用&#xff1a; public static void signatureProcess(String sourceImagePath, String targetImagePath) {Graphics2D graphics2D null…

Nginx_简介 + Linux系统下详细安装教程指路

安装教程指路 可参看该视频【尚硅谷Nginx教程&#xff08;亿级流量nginx架构设计&#xff09;】 https://www.bilibili.com/video/BV1yS4y1N76R/?p2&share_sourcecopy_web&vd_source4c2f33f3ba1a0dd45bfdf574befd0069 的p2-p7。从安装centos虚拟机到在虚拟机上安装ng…

JVM(一)——内存结构

一. 前言 1、什么是 JVM? 1&#xff09;定义&#xff1a; Java Virtual Machine - java 程序的运行环境&#xff08;java 二进制字节码的运行环境&#xff09; 2&#xff09;好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越…

C++从入门到精通——函数重载

函数重载 前言一、函数重载概念二、函数重载的分类参数类型不同的函数重载参数个数不同的函数重载参数类型顺序不同的函数重载 三、函数重载的具体代码展示main.cpp 四、为什么为什么C支持函数重载&#xff0c;而C语言不支持函数重载呢 前言 函数重载是指在同一个作用域内&…

.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案

目录(结尾附加项目代码资源地址) 引言&#xff1a; 1. SAGA事务模式 2. 拆分为子事务 3. 失败回滚 4. 如何做补偿 4.1 失败的分支是否需要补偿 5. 异常 6. 异常与子事务屏障 6.1 NPC的挑战 6.2 现有方案的问题 6.3 子事务屏障 6.4 原理 7. 更多高级场景 7.1 部分…

30-3 越权漏洞 - 水平越权(横向越权)

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、定义 攻击者可以访问和操作与其拥有同级权限的用户资源。 示例: 学生A在教务系统上正常只能修改自己的作业内容,但由于不合理的权限校验规则等原因,学生A可以修改学生B的内…

element-ui autocomplete 组件源码分享

紧接着 input 组件的源码&#xff0c;分享带输入建议的 autocomplete 组件&#xff0c;在 element-ui 官方文档上&#xff0c;没有这个组件的 api 目录&#xff0c;它的 api 是和 input 组件的 api 在一起的&#xff0c;看完源码之后发现&#xff0c;源码当中 autocomplete 组件…

Linux部分命令

目录 1.文件介绍 2.ls命令 3.目录命令 4.相对路径以及绝对路径 5.命令创建目录&#xff08;文件夹&#xff09; 6.which命令 7.find命令 8.grep命令 9.wc命令 10.echo、tail、重定向符 1.文件介绍 和window不同&#xff0c;Linux没有盘路径&#xff0c;所有的文件都存…

Linux部署Kafka2.8.1

安装Jdk 首先确保你的机器上安装了Jdk&#xff0c;Kafka需要Java运行环境&#xff0c;低版本的Kafka还需要Zookeeper&#xff0c;我此次要安装的Kafka版本为2.8.1&#xff0c;已经内置了一个Zookeeper环境&#xff0c;所以我们可以不部署Zookeeper直接使用。 1、解压Jdk包 t…

OSPF GTSM(通用TTL安全保护机制)

目录 GTSM的定义 使用GTSM的目的 GTSM的原理 配置OSPF GTSM实例 组网需求 配置思路 操作步骤 1. 配置各接口的IP地址 2.配置OSPF基本功能 3.配置OSPF GTSM 4. 验证配置结果 GTSM的定义 GTSM&#xff08;Generalized TTL Security Mechanism&#xff09;&#xff0c;…

1.Mysql基础入门—MySQL-mysql 8.0.11安装教程

1.Mysql基础入门—MySQL-mysql 8.0.11安装教程 摘要个人简介下载Mysql安装Mysql配置环境变量 摘要 MySQL 8.0.11的安装过程涉及几个关键步骤&#xff0c;首先访问MySQL官方网站下载页面&#xff0c;选择操作系统相对应的MySQL版本进行下载。对于Windows用户&#xff0c;启动下…

element-ui inputNumber 组件源码分享

今日简单分享 inputNumber 组件的实现原理&#xff0c;主要从以下四个方面来分享&#xff1a; 1、inputNumber 组件的页面结构 2、inputNumber 组件的属性 3、inputNumber 组件的事件 4、inputNumber 组件的方法 一、inputNumber 组件的页面结构。 二、inputNumber 组件的…

【动手学深度学习-pytorch】-9.3深度循环神经网络

到目前为止&#xff0c;我们只讨论了具有一个单向隐藏层的循环神经网络。 其中&#xff0c;隐变量和观测值与具体的函数形式的交互方式是相当随意的。 只要交互类型建模具有足够的灵活性&#xff0c;这就不是一个大问题。 然而&#xff0c;对一个单层来说&#xff0c;这可能具有…

霸榜京东数据库图书热卖榜!《图数据库:理论与实践》热销中

《图数据库&#xff1a;理论与实践》自2月上市以来&#xff0c;受到了数据库行业的广泛关注与热烈支持&#xff0c;问世两周便销量破千本&#xff01;近期还荣登京东 “数据库图书榜”热卖榜第二名&#xff0c;广获好评&#xff01; 在此&#xff0c;真挚的感谢各位读者的认可…

IP地址暴露可能带来的风险和危害

当自己的IP地址暴露时&#xff0c;可能会面临一系列的风险和潜在危害。IP地址作为互联网上连接用户与网络设备的标识符&#xff0c;其安全性对于个人信息安全至关重要。以下将详细探讨IP地址暴露可能带来的后果&#xff0c;并提出相应的防范措施。 首先&#xff0c;IP地址暴露可…

docker logs 查找日志常用命令

docker logs 是什么 docker logs 是 Docker 命令行工具提供的一个命令&#xff0c;用于查看容器的日志输出。它可以显示容器在运行过程中生成的标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;&#xff0c;帮助用户诊断容器的行为和排查…

LVS几种模式介绍

备注&#xff1a;这篇真的是水文&#xff0c;不看也罢。 LVS&#xff0c;linux virtual server&#xff0c;可提供IP网络层的负载均衡。 其主要模式主要有以下几种&#xff1a; LVS-NAT 主要通过网络地址转换&#xff0c;修改目的IP实现。Network Address Translation LVS-…

关于Oracle VM VirtualBox无法查询IP地址的原因

1.如下&#xff0c;输入ifconfig却没有显示我框住的显示IP。 2.原因有可能&#xff1a; &#xff08;1&#xff09;主机没连上网络。 &#xff08;2&#xff09;虚拟机网络设置不正确。

bugku-web-你必须让他停下

这里在不停的刷新 页面源码 开发脚本截取同样效果 利用抓包工具将其请求与得到的数据全部记录下来 发现只有10.jpg可以被正常加载出来 将其图片打开 发现没有flag 再将其转化为txt文件 同样不对 这时回到抓包处 查看请求10.jpg文件的报文 得到flag