欢迎来到kriton的知识小屋(🍺)
在校大学生一枚,以比赛促学,时不时冒头更新一下,
目前正专精于蓝队取证,欢迎大佬带带我
注:所有题目wp均为复现题目过程,中途参考多位大佬步骤,因此大部分会标明借鉴链接
|

kriton

园龄:2个月粉丝:2关注:1

polarctf-crypto中等难度wp整理(截止至2024.12)

二进制

 

一个音频文件,听了,不是摩斯电码看了wp,原来是拨号

考察:DTMF拨号音识别

使用dtmf2num这个工具解析这个音频

 

 

二进制10

但是不是,它是01字符变形成摩斯密码,把0替换成.,把1替换成-,把*替换成空格。

得到一组摩斯电码,然后去解即可

 

 

还要小写md5加密,服了这个老六

 

 

 

FB

百度识得这是斐波那契数列

将"VERAYTRGUYTLOUYTFDRKONMLKJOPGF65DD"作为字典

首先我们来了解一下斐波那契数列的简单定义:

一个数列:01123581321345589……这个数列从第3项开始 ,每一项都等于前两项之和。

 

那么我们从1开始为字典排序,0不代表任何,即序号123代表了字典的前三个字母VER,后面按序入座

flag的组成内容则按照斐波那契数列规则组成:

 

因为字典只有34位,所以序号112358132134所对应的字母或数字排列而成了flag内容

包上flag即可,得到

flag{VVERYGOOD}

 

多表替换

维吉尼亚解码,key未知,直接爆破

 

 

 

需要扩大key值的范围

 

flag{xiao zeng zui bang chong chong chong}

 

 

拒绝固定思维.

 

只给了一张表,010查看

 

题目在末尾,这我还真不知道,提取出来

gmbhvpuufnwoneusnowscrrvuwutotfnwobe

 

根据其他人的wp知道了这是base64换表

大佬的代码如下:

import base64

dict={0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}

base64_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/']

chiper='gmbhvpuufnwoneusnowscrrvuwutotfnwobe'
flag=""

for i inrange(len(chiper)):
 for j inrange(64):
  if(dict[j]==chiper[i]):
   flag+=base64_list[j]
print(flag)

 得到flag{8277e0910d750195b448797616e091ad}

flag{8277e0910d750195b448797616e091ads}

 

rsa

仅提供了ec

上脚本

 

 

RSA

还有公钥,直接导入到RSA工具,获得en值,yafu分解得到pq

 

将所需数值依次填入,计算私钥,计算明文

 

题目要求对明文进行md5加密作为flag提交

 

 

 

七夕特供

先从hint.txt入手,发现是零宽文本加密

 

与佛论禅,但是是与佛论禅加密版,需要箴言,即key值,网址不太好找与佛论禅加密版,上文得到的gugua大概就是key

 

 

花朵加密,这个加密类型就很好猜了

 

得到flag

 

sha

 

解密脚本如下

 

 

 

维吉尼亚解密即可

 

 

xxtea

 

 

橙色是密文,蓝色是keyxxtea解密

 

 

 

你知道M型栅栏密码吗?

进制转换

B二进制、O八进制、D十进制、H十六进制

写脚本跑一下,都变成十进制,转字符

 

import binascii

text ="H7b D97 B00110111 D57 H37 H67 D55 B00110100 D52 H31 H62 O65 O65 H33 H7d D97 D101 H66 H39 O143 B00110110 D98 H32 H65 O154 O67 B01100100 D98 H36 H30 O67 O145 D53 O146 D51 H61 H61 O145"
result =""
text2 = text.split(" ")

for i in text2:
    if i[0] =="B":
       result +=chr(int(i[1:],2))
    if i[0] =='O':
       result +=chr(int(i[1:],8))
    if i[0] =='D':
       result +=chr(int(i[1:],10))
    if i[0] =='H':
       result +=chr(int(i[1:],16))

print(result)       

# {a797g7441b553}aef9c6b2el7db607e5f3aae
#B二进制、O八进制、D十进制、H十六进制

{a797g7441b553}aef9c6b2el7db607e5f3aae

M型栅栏手动解密

 

得到flag

flag{7e73df4a49ba6c17b60a7b5952ee5e37}

 

 

小精灵来喽

 

爆破不了,合着这是密码提示

 

维吉尼亚解密

 

得到压缩包密码

 

古精灵对照表对照

 

得到herec0mesthee1f

然后md5解密

 

要求字母大写,字母大小写转换

得到flag

flag{08460AE514ACCC54E5D8D4B690A75D29}

 

 

眼见非实

 

实际上不是二进制转其他,这条路走不通,眼见非实,说明不是我们所看到的二进制,看了wp发现是变形培根密码

1 -> A,0 -> B,再培根密码解码,这里可以随波逐流直接解

AAAABAAAAAAAABAABBBAABBABABAAAAAAAAABBABAAABAABAAAABBBBAABBBAABAABAAABABAAABAABAAABBAABBBAABBBAAAABB

(转成标准的培根密码)

 

MD5加密提交

 

 

不一样的四四方方

我们先将其重复的去掉

 

然后将未出现的字母按顺序补全,q先不填

 

题干要求将最后一位删掉,但是这样就不满足25字节数了

所以要把q补上这样就得得到了最终的key

     

在线加密

 

 

32Md5小写,包上flag提交

 

 

我爱456

循环456,依次取出456

 

count =1
str=""
text = [b'kseYvkasuj5618t',b'lygemfla235158jdb',b'utasvQsjdybl587t',b'sydwkuhd54kdhg',b'jtftY658qiwudhs',b'iaugwjiushyc871',b'aksQbhasbkjcbkjd',b'dvbpzd8v26dfv6f',b's6dvdNf6v52v6x',b'65dT26f5d1b6f5v',b'35f2Y6d65bbfv5',b'35dfv32d8bfv256d',b'kdhMvnhdkjzldkj',b'sdhjTujsdbch268',b'sdr26Iksds265dsv',b'jnm2dsnsdv26865']

for i in text:
    if count %3==1:
       str+=chr(i[3])
    if count %3==2:
       str+=chr(i[4])
    if count %3==0:
       str+=chr(i[5])
    count = count+1

print(str)

# YmQwYjQzNTY3MTI2

然后base64解密

 

 

之后md5加密

 

得到flag

flag{b5ff0893e6522a037c144a1f502c2b48}

 

 

离家出走的猫猫

 

 

谁能想到是首藏头诗

得到明文:小明是一个福瑞控

 

包上flag即可

 

 

rsaaa

 

右上角有计算nd

最后计算得到M值,转字符即可

将其包上flag{}提交

 

 

Hello

 

得到其ASCII码值7269767679(拼接一起并不常见)

模幂运算,代码如下:

# Given values

n=365354477477
e=65537

# ASCII values for 'HELLO'

ascii_values= [7269767679]

# Encrypt each ASCII value using the public key (n, e)

encrypted_values= [pow(m, e, n) forminascii_values]

print(encrypted_values)
得到flag{124198634960}

Fakeboard

 

 

 

ao神之力

 

言外之意,我们进行两次base解码,再进行一次进制解码即可

但是做的时候很懵,用随波逐流一键解码

先是一层base91

 

然后16进制转字符

 

然后就是两层base编码了

 

最后将其进行MD5加密提交即可

flag{caf3ebc6c7f2a20660873080ca55e541}

跟预料的多了一层base91编码

 

 

不友好的RSA

写脚本

 

M值包上flag即可

 

官方脚本如上

 

 

bllbl的密码锁

U2FsdGVkX1+2ohXvVEyY3J2P3xS6K1uQdbmRnTd2cEYaMPNEgl/mZJuM3+KGIh46
ZeKSgkr3IVCY8GhSGWRuh9qocOLTVO9bXHVqTTkXFf6+Pn68lihnaxXfgyyS0mPY
X4YLnw8yug8OvjGRVnB9yjdXZL2rZivQSGqe4CfQqk9+Ut9rLqkogqbwpEhCG9nM
3J72KKVqGJ46l9D8YX/8S3msGcCOVBkN+CKln3+ddwUR2tE3xIC8hTLCQH2sG+LJ
ot9XSw9a/12l/YlVq5S8fMyCgdzdn8CIwRRKCOcZyUz5eoaeAPAbnE1I5J2smhVs
wsFfjJ1eR93hbm3yAJbI2HeMZhrke/KY8ixpivaL/1N7tmC2xKlfY9/p3MGzlFL5
o5mAmMG5ogkW9Rz6aM36eSr0nVQRu97Dy8ljLipEOF+wepJmxqHIcphLq0EzJjtM
F5VY1bTk6uFOjIbvQuePQiu/56cj+CP3+8I9nL0gajMZJ0oeuYXTi0n100FtznDS
A5pHnCs+7FCXFnibYhGxhylYYLOEN7evhgfNK3m+jTix+Z1oDU7KbegN0Q6nwh8v
rCwL+nWsWCoKAd/eYGkIHvt4nYcIW0DYIah8k+abADmREFSn/xr+/+x75xYrlJkD
pyxg/cKzpk+JFxPxcCVRbGk+fDUQbiL5I0am1F5jMWqEQj0OwXMxMiXjek84admP
2OABxIhf+r/DWtnlkDg+QE3w9nZCfDWrlVZSXlgSfeJCVOkVaKOaAuixCmnCeUEY
e7EroMah6ga1CqYcGaYYT1nEFpU3kVF9hGvNGy6C+EAz8P6GV+eKA8bdOrBFazD0
rNrh9ANX9C1lPr9VJmG/WfCFXSOoRksclGrAZyU94LkVqTk5OE493HTD9OHBawz8
iM92zUYPBMsuqvRf+x4RPiRTNrgubmIjxb1+4lR1p8KU6nhJuiahVDBvaWWHcvxd
I4UHggatwoF7nmxVCzuTjymEslKcn9WkDGfd2C62cxQ/fJoOsFp3qpLYPPGQksYq
1xj4AZkl8MGE5QqrGXd8MoqF/RIn3iflZ/j60nONkc3Z5RaZCQ9z0qG+7PlJSXer

 得到一串加密文本,开头为U2Fsd,可能为aes或者rabbit加密

题目还让我们进行nc连接

得到提示,'bllbl'可能为key,而继续下一步需要密码

得到加密脚本

class Bllbl_crypto1:
    def __init__(self):
        self.char_map = "BALUINGbaluing+-"#偶吼吼吼,balalabuliang的大小写作为集合哦
        self.index_map = {char: index for index, char in enumerate(self.char_map)}

    def encode(self, mingwen):
        b_str = ''.join(format(int(char, 16), '04b') for char in mingwen)
        list_en = []
        for i in range(0, len(b_str), 4):
            list_4_b = b_str[i:i + 4]
            index = int(list_4_b, 2)
            list_en.append(self.char_map[index])

        return ''.join(list_en)
#                  哼~什么注释都不给你,嘿嘿,因为【害羞】~你最棒了,可不要小瞧我们的羁绊啊


密文:nInuILUauBilLUaLBgnnNBluG-bNaIlinaA+bLaglgInL-GUG-BGb-alnnAIaGLn+nninab+IiNn+L-+LaUBa-gl-Lubiu-Uua

那么接下来要写个解密脚本,这里借鉴大佬的脚本了

class Bllbl_crypto1:
    def __init__(self):
        self.char_map = "BALUINGbaluing+-"
        self.index_map = {char: index for index, char in enumerate(self.char_map)}

    def decode(self, cipher):
        # 将密文字符映射回对应的 4 位二进制
        binary_str = ''.join(format(self.index_map[char], '04b') for char in cipher)

        # 每 4 位二进制组成一个 16 进制字符
        hex_str = ''.join(hex(int(binary_str[i:i + 4], 2))[2:] for i in range(0, len(binary_str), 4))

        return hex_str


# 使用解码器
crypto = Bllbl_crypto1()
ciphertext = "nInuILUauBilLUaLBgnnNBluG-bNaIlinaA+bLaglgInL-GUG-BGb-alnnAIaGLn+nninab+IiNn+L-+LaUBa-gl-Lubiu-Uua"
plaintext = crypto.decode(ciphertext)

print(f"解码后的明文: {plaintext}")
#c4ca4238a0b923820dcc509a6f75849bc81e728d9d4c2f636f067f89cc14862ceccbc87e4b5ce2fe28308fd9f2a7baf3a8

那么这里得到的明文其实就是所需要的密码了

flag{94c1ff6cadd173d446f612724f71fe9a}

 

幂数加密了解一下

 可以使用随波逐流,幂数加密也可以指云影加密,具体区别请看幂数加密(云影加密)-CSDN博客

 

 

 

得到flag

 

flag{NEWYEAR}

 

 

 

 

 

posted @   kriton  阅读(46)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示