目录

1.凯撒密码

2.rsa1

3.rsa2

4.摩斯密码+base32+base64+7bit编码

5.栅栏密码+培根密码

6.ROT13+hex(base16)+base32+base64+base85

7.best_rsa

8.cr4-poor-rsa


1.凯撒密码

见题目可知:凯撒密码

见synt可知移位13

2.rsa1

看到p,q,想到rsa

打开factordb

factordb.com

将一串大数放入计算

可见两个数分别为p和q

已知p+q=

用sha1加密

3.rsa2

看到65537,想到rsa的e

尝试两个数,找出n(可分解为两个素数相乘)

那么另一个数就是c了

from Crypto.Util.number import *
import gmpy2 # 由题目可知
c = 55467603374456878954903605101418010911266401311446712069323403726580883739934
e = 65537n = 64199026477096730903742378214171310902653200937184187702996339280215555390807
# yafu 分解 n 可得 p 和 q
p = 214632396793808784541787006171047378643
q = 299111538780284425759013610980166311149# 计算私钥 d
d = gmpy2.invert(e, (p-1)*(q-1))# 解密 m
m = pow(c,d,n)print(long_to_bytes(m))
# b'flag{now_y0u_know_rsa}'

运行输出flag

4.摩斯密码+base32+base64+7bit编码

打开附件         

发现是摩斯密码,解码

JFCFSMSOPJNG2T2HJJVE22TDGVHDETTJLFVESMKZNJUGWT2ULJUU2MSRGFHGUSL2JYZES6SPI5GXQTTKNN5FURCWNJHUITL2JZLUKM2PIRUGUT2HJJVVUR2NGRNFITLYLEZEM3COI5HGYWSUIF5A

base32后:

IDY2NzZmOGJjMjc5N2NiYjI1YjhkOTZiM2Q1NjIzN2IzOGMxNjkzZDVjODMzNWE3ODhjOGJkZGM4ZTMxY2FlNGNlZTAz

base64后:

6676f8bc2797cbb25b8d96b3d56237b38c1693d5c8335a788c8bddc8e31cae4cee03

题目提示为:7bit

原理如下:

根据ASCII码  开始快乐的7bit解码时间

得到flag

5.栅栏密码+培根密码

肥肠神似英文句子,怀疑为栅栏密码

看得出来出题人费了大劲区分大小写,所以我们要十分给面子的试一下培根密码(谢谢你,出题人)

尝试一下将大、小写改为A、B或B、A

直接培根密码得出flag

6.ROT13+hex(base16)+base32+base64+base85

扔到 https://icyberchef.com/

密码由数字0~9和字母A~F组成,用base16

密码由字母A~Z和数字2~7 组成,用base32

密码由A~Z,a~z,0~9,+,/组成,且末尾有=(

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:(1)先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。
(2)在编码后的Base64文本后加上一个或两个=号,代表补足的字节数。

),用base64

密码由0-9A-Za-z!#$%&()*+\-;<=>?@^_`{|}~组成,根据提示用base85

7.best_rsa

所给文件:

文件2同理

这可犯了难,怎么获取c,n,e呢

代码如下:

from Crypto.Util.number import *
from Crypto.PublicKey import RSA
import gmpy2
import binasciic1=bytes_to_long(open('./cipher1.txt','rb').read())
c2=bytes_to_long(open('./cipher2.txt','rb').read())pub1=RSA.importKey(open('./publickey1.pem').read())
pub2=RSA.importKey(open('./publickey2.pem').read())
n1= pub1.n
e1= pub1.e
n2= pub2.n
e2= pub2.e

有了c1,n1,e1,c2,n2,e2,猜测为共模攻击:n1==n2

代码如下:

from Crypto.Util.number import *
from Crypto.PublicKey import RSA
import gmpy2
import binasciic1=bytes_to_long(open('./cipher1.txt','rb').read())
c2=bytes_to_long(open('./cipher2.txt','rb').read())pub1=RSA.importKey(open('./publickey1.pem').read())
pub2=RSA.importKey(open('./publickey2.pem').read())
n1= pub1.n
e1= pub1.e
n2= pub2.n
e2= pub2.eassert n1==n2 #Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。s = gmpy2.gcdext(e1,e2)
a = s[1]
b = s[2]if a<0:a = -ac1 = gmpy2.invert(c1,n1)
else:b = -bc2 = gmpy2.invert(c2,n1)m = (gmpy2.powmod(c1,a,n1)*gmpy2.powmod(c2,b,n1))%n1print(binascii.unhexlify(hex(m)[2:]))

运行得到flag

8.cr4-poor-rsa

解压文件

打开查看

flag.b64                                                                                            0000644 0001750 0001750 00000000105 13023213602 012420  0                                                                                                    ustar   oddcoder                        oddcoder                                                                                                                                                                                                               Ni45iH4UnXSttNuf0Oy80+G5J7tm8sBJuDNN7qfTIdEKJow4siF2cpSbP/qIWDjSi+w=key.pub                                                                                             0000644 0001750 0001750 00000000242 13023212532 012475  0                                                                                                    ustar   oddcoder                        oddcoder                                                                                                                                                                                                               -----BEGIN PUBLIC KEY-----
ME0wDQYJKoZIhvcNAQEBBQADPAAwOQIyUqmeJJ7nzzwMv5Y6AJZhdyvJzfbh4/v8
bkSgel4PiURXqfgcOuEyrFaD01soulwyQkMCAwEAAQ==
-----END PUBLIC KEY-----

值得注意的有两部分:

flag.b64                                                                                                                                                                                                                                                                                                          Ni45iH4UnXSttNuf0Oy80+G5J7tm8sBJuDNN7qfTIdEKJow4siF2cpSbP/qIWDjSi+w=

上述推测其为base64加密过的密文

                                                                                                                                                                                                           -----BEGIN PUBLIC KEY-----
ME0wDQYJKoZIhvcNAQEBBQADPAAwOQIyUqmeJJ7nzzwMv5Y6AJZhdyvJzfbh4/v8
bkSgel4PiURXqfgcOuEyrFaD01soulwyQkMCAwEAAQ==
-----END PUBLIC KEY-----

上述为公钥

代码为:

from Crypto.Util.number import *
from Crypto.PublicKey import RSA
import gmpy2
import rsa
import base64#将第二部分放入key.txt,读出n和e
pub=RSA.importKey(open('./key.txt').read())
n= pub.n
e= pub.e#根据n算出p,q
p = 863653476616376575308866344984576466644942572246900013156919
q = 965445304326998194798282228842484732438457170595999523426901#根据p,q,e算出phi与d
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
#生成私钥
priv = rsa.PrivateKey(n, e, d, p, q)#将第一部分的base64编码放入1.txt并读出
with open("./1.txt", "rb") as file:cipher = file.read()
#base64解码
cipher = base64.b64decode(cipher)#利用私钥和解码后的字符cipher解密
m = rsa.decrypt(cipher, priv).decode()
print(m)

待补充

【Crypto】wp相关推荐

  1. 【Crypto】BUGKU-抄错的字符

    [Crypto]BUGKU-抄错的字符 题目描述 解题思路&&考察内容 在线工具 1.多功能加解密工具: 2.十六进制解码 总结 个人学习记录,如有不妥,欢迎指正 题目描述 解题思路& ...

  2. 【Crypto】BUGKU-聪明的小羊

    [Crypto]BUGKU-聪明的小羊 题目描述 解题思路&&考察内容 在线工具 1.栅栏密码加解密工具: 总结 个人学习记录,如有不妥,欢迎指正 题目描述 解题思路&& ...

  3. 【HDCTF2023】wp

    [HDCTF2023]wp 文章目录 [HDCTF2023]wp web Welcome To HDCTF 2023 SearchMaster YamiYami LoginMaster misc ha ...

  4. 【GDOUCTF2023】wp

    [GDOUCTF2023] WEB hate eat snake js小游戏,玩游戏得到flag,修改一下js源码 EZ WEB 访问 /super-secret-route-nobody-will- ...

  5. 【Crypto】判断密文的加密方式

    如何判断密文的加密方式: 1.ASCII编码: 密文是十进制,字符范围是"0-9".(当然也有可能是8或16进制的ASCII) 2.Base64编码: 密文由**字母大小写.数字和 ...

  6. 【crypto】基于crypto.js的web前端加解密系统实现

    文章目录 一.概念介绍 1.1 crypto.js介绍 1.2 加密 / 哈希 / 编码 1.2.1 加密/解密 1.2.2 散列/哈希 1.2.3 BASE64编解码 二.加解密思想(以md5为例) ...

  7. 【Crypto】RSA

    目录 1.已知(p,q,e),求d 2.已知(p,q,e,c),求m 3.已知(p,q,dp,dq,c),求m 4.已知(e,dp,n,c),求m 5.已知(n,e1,e2,c1,c2),求m 6.已 ...

  8. python对称加密_【Python】 基于秘钥的对称加密

    [Crypto] 关于用python进行信息的加密,类似的解决方案有很多比如用base64编码进行encode,再或者是hashlib来进行hash.但是还缺少一种明明场景很简单的解决方案,就是把利用 ...

  9. 【攻防世界 | WP】CAT

    [攻防世界 | WP]CAT 解题步骤 分析 学习知识 URL编码 什么是URL编码 解题步骤 分析 打开页面查看 输入url后发现没有反应,而输入127.0.0.1这类ip地址后,出现了回显 发现u ...

最新文章

  1. jquery实现tab切换加自动滚动切换
  2. hbase报错:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
  3. thinkphp自定义标签库
  4. apple tv 开发_如何跨多台Apple TV同步Apple TV的主屏幕
  5. java 怎么链接ndk的库_使用ndk-build链接现有的静态库
  6. 面试官问你Java内存区域你用new创建对象来解释
  7. 【AC】九度OJ题目1153:括号匹配问题
  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_10 打印流_1_打印流_概述和使用...
  9. 前端逼死强迫症系列之javascript
  10. 【电路设计】1N系列二极管型号总结
  11. k2p路由器搭建php,K2P新手教程之openwrt cc 基础设置
  12. 树莓派CM4_Tiny(双HDMI)扩展板运行Openwrt演示(有线以太网)
  13. 如何实现java编写告白程序,程序员如何实现表白代码
  14. 字节跳动基于ClickHouse优化实践之“高可用”
  15. Unity Scene视图介绍
  16. 定义fact(n)函数,调用函数,返回值
  17. /etc/yum.repos.d及repo文件解析
  18. Java常用的IO流
  19. 国务院办公厅关于2013年部分节假日安排的通知(转载)
  20. 福昕PDF阅读器:拒绝瞎忙,拥抱高效

热门文章

  1. 安装Proxmox VE系统报错
  2. 人类害怕的14种恐惧
  3. 华测服务器进不去系统,华测云服务器如何登陆
  4. OSPF多区域 虚连接
  5. sed awk工具 及一些常用的shell脚本
  6. vue3项目记录-引入必要的包
  7. 基于28335实现的旋变软解码 利用三角函数积化和差公式将旋变输出信号分解为高频和低频两部分… 锁相环
  8. Mac OS自带游戏
  9. 数字IC低功耗设计总结
  10. 苹果手机ios系统通过数据线连接电脑进行抓包,不在同一局域网下的解决方案