CTF-DAY13 PolarDN2025年夏季个人 复现
云影
题目:
5212081052120120885309853提示:flag{解密结果的md5值}
解密逻辑
云影密码的关键是将数据分割,因此将题目中的字符串按照0分割:
a = '5212081052120120885309853'
s = a.split('0')
print(s)l = []
for i in s:sum = 0for j in i:sum += eval(j)l.append(chr(sum+64))
print(''.join(l))
#JIJCXY
长城守护计划的密码疑云
题目:
长城守护计划的密码疑云北京的慕田峪长城在近期的文物修缮工作中,考古团队发现了一处明代的秘密藏室。藏室内的古老卷轴记载着关于长城防御体系的重要信息,为了防止这些珍贵资料在数字化存档过程中泄露,文物保护部门使用RSA加密算法对卷轴内容进行了加密。负责此次数字化工作的技术人员突然遭遇意外,未能及时留下完整的解密密钥。目前仅知道公钥中的n = 39637291,公钥指数e = 6557355762357451357,加密后的密文c = 484927 。这些信息关乎长城历史研究的重大突破,一旦成功解密,将为长城的保护与历史文化研究提供关键线索。你作为国家密码学与文物保护联合小组的核心成员,火速赶往北京参与解密工作。你的任务是通过已知数据计算出私钥指数d,并进一步求出对应的明文m。如果不能及时解密,不仅会延误长城保护的研究进程,还可能让这份承载着历史密码的珍贵资料陷入沉睡。一场争分夺秒的解密行动,在长城脚下正式展开!
解密逻辑
已知n = 39637291,公钥指数e = 6557355762357451357,密文c = 484927,要RSA解私钥指数d,和明文m。
n很小可直接分解出p,q,然后直接计算。
from hashlib import md5
n = 39637291
e = 6557355762357451357
c = 484927
p = 4643
q = 8537
d = inverse(e,(p-1)*(q-1))
print(d)
m = pow(c,d,n)
print(m)
print(md5((str(d)+str(m)).encode('utf-8')).hexdigest())
# 18807893
# 22192076
# 5929220e5023201e80dc46aa484d6019
哈登的”封神“三分
题目:
背景:2019年北京时间1月4日,在NBA常规赛一场焦点战中,休斯敦火箭队在客场经过加时鏖战,最后时刻,哈登以一记精准的高难度三分绝杀了金州勇士队,火箭队最终以135:134击败金州勇士。为了庆祝哈登三分绝杀,学CTF的Squirtle利用密码知识写下了一个密阵和一串密文,你能破译出密文的含义么?密阵:EPSDUCVWYM.ZLKXNBTFGORIJHAQ
密文:APFWSQSIPEKQP
解密逻辑
三分密码:
首先随意制造三个3×3的Polybius方格替代密码,包括26个英文字母和一个符号,并写出要加密的讯息的三维坐标。
然后选择一个英文单词当作密钥,把重复字母去掉后填入方格中,再把剩下的字母按a-z顺序填入,最后填入符号。
讯息和坐标四个一列排在一起,再顺序取横行的数字,三个一组分开,将这三个数字当成坐标,找出对应的字母,便得到密文。
s = "EPSDUCVWYM.ZLKXNBTFGORIJHAQ" #密阵
c = "APFWSQSIPEKQP" #密文生成三个3*3的方阵
方阵1:[EPS, DUC, VWY], 方阵2:[M.Z, LKX, NBT], 方阵3:[FGO, RIJ, HAQ]
将密文的位置对照出来:
A(3,3,2) P(1,1,2) F(3,1,1) W(1,3,2) S(1,1,3)...
得到:332 112 311 132 113 333 113 322 112 111 222 333 112
重新分段:33211 23111 32113 33311 33221 12111 222 333 112
行列转换一下,转换为密阵:
[33211, 33311, 222,23111, 33221, 333,23111, 12111, 112]再分成三个方阵,按列读取作为坐标取出对应字符
[33211, 23111, 23111]->JAMES
[33311, 33221, 12111]->HARDE
[222, 333, 112]->NNB
得到明文: JAMESHARDENNB
工作品茶聊三国
题目:
VTJGc2RHVmtYMSt4T0czVjFkMzFlaEhscUIxdnppZHVoUDhIWCswK09KMXNDb3h0dEtrL1ZMQW1xalRsS29wRitvZDM0Z0hqcFp6N1doQkVvUkUyNXc9PQ==
密钥提示:我在这里努力工作,闲暇时会和Rivest品品茶,和凯撒聊聊三国的故事。
解题逻辑
就挺扯的。。。
努力工作对应密钥hard work,Rivest对应RC4编码,品品茶推测为XXTea编码,凯撒+三国表示凯撒的偏移为3。
解密思路为:base64 -> AES(密钥hard) -> RC4(密钥work) -> XXTea(密钥tea) ->凯撒
unusually
题目:
from Crypto.Util.number import *
from sympy import *p = getPrime(195)
q = getPrime(195)
n = p*q
e = 65535
flag= b'XXXXXXXXXXXXXXXXXXX'm = bytes_to_long(flag)
print(nextprime(m))
print(prevprime(m))
c = pow(n,e,m)
print('n=',n)
print('c=',c)'''
671127523074690136116845074920717644143288626158531024402033639752688890215412609007519932833721
671127523074690136116845074920717644143288626158531024402033639752688890215412609007519932834183
n = 1526026852743317872689519585937541940924797496649603692424635450129074124078179120067618023675593573
c = 367076481576650817908149902851774134294227770558143290079121674007696527322639764861520184786487'''
解密逻辑
直接爆破m
对比了官方,同一个思路,但是跑不出来估计是数据的问题。