buuctf中Crypto解题合集(正在更新中前20个)

一、一眼就解密

ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=
base64在线编解码:https://base64.supfree.net/

flag{THE_FLAG_OF_THIS_STRING}

二、MD5

e00cf25ad42683b3df678c61f42c6bda
MD5在线解码:https://www.cmd5.com/

flag{admin1}

三、Url编码

%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
url编码在线网站:https://anytexteditor.com/cn/url-encoder

flag{and 1=1}

四:看我回旋踢

synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
前面四个字母,标准的flag格式,猜测是凯撒,synt转为flag,都位移为13

凯撒在线编解码:https://www.metools.info/code/c70.html

flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}

五、摩丝

.. .-.. --- ...- . -.-- --- ..-
摩斯在线解码:https://www.lddgo.net/encrypt/morse

flag{ILOVEYOU}

六、password

姓名:张三 
生日:19900315

key格式为key{xxxxxxxxxx}

解题思路:key{}中有10个数,猜测可能是 “姓名缩写”+“生日”

解题过程: 姓名缩写:张三——>zs 生日:19900315 “姓名缩写”+“生日” = zs19900315
flag{zs19900315}

七、变异凯撒

加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }

拿到题先比对acsii码值对比表:acsii码
通过上面的acsii码值对比表可以看到第一个字符向后移了5,第二个向后移了6,第三个向后移了7,以此类推,很容易想到变异凯撒即每个向后移的位数是前一个加1,python代码:

str="afZ_r9VYfScOeO_UL^RWUc"
k=5
for i in str:
    print(chr(ord(i)+k),end='')
    k+=1

python在线编译:https://www.sciclass.cn/python

可以在运行结果处,右键检查源码,然后双击源码,即可复制结果

flag{Caesar_variation}

八、Quoted-printable

=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6

Quoted-Printable编码可译为“可打印字符引用编码”,或者“使用可打印字符的编码”。通常我们接收电子邮件,查看电子邮件原始信息,经常会看到这种类型的编码,电子邮件信头显示:Content-Transfer-Encoding:
quoted-printable。它是多用途互联网邮件扩展(MIME)
一种实现方式。其中MIME是一个互联网标准,它扩展了电子邮件标准,致力于使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。目前http协议中,很多采用MIME框架!quoted-printable
就是说用一些可打印常用字符,表示一个字节(8位)中所有非打印字符方法。

网页格式各种编解码:https://bianma.bmcx.com/

flag{那你也很棒哦}

九、Rabbit

U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI

在线Rabbit加密解密:http://www.jsons.cn/rabbitencrypt/

flag{Cute_Rabbit}

十、篱笆墙的影子

felhaagv{ewtehtehfilnakgw}

栅栏密码进行一下解密

将密文字符两两一组进行分组,共十三组

fe lh aa gv {e wt eh te hf il na kg w}

栅栏在线解密:https://ctf.bugku.com/tool/railfence

或者手工将每组第二个字符拼起来形成明文2,将明文1和2拼接起来,就是我们要的flag

flag{wethinkwehavetheflag}

十一、RSA

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交

求解RSA的Python代码:

def extended_euclidean(a, b):
    if a == 0:
        return b, 0, 1
    gcd, x1, y1 = extended_euclidean(b % a, a)
    x = y1 - (b // a) * x1
    y = x1
    return gcd, x, y

def mod_inverse(e, phi):
    gcd, x, y = extended_euclidean(e, phi)
    if gcd != 1:
        return None  # modular inverse does not exist
    else:
        return x % phi

# RSA parameters
p = 473398607161
q = 4511491
e = 17

# Compute n and phi(n)
n = p * q
phi_n = (p - 1) * (q - 1)

# Compute d
d = mod_inverse(e, phi_n)

print(d)

Python在线编程:https://www.sciclass.cn/python

可以在运行结果处,右键检查源码,然后双击源码,即可复制结果

flag{125631357777427553}

十二、丢失的MD5

题目:

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print des

运行一下:

提示print格式错误:

print des 改成 print (des) 运行:

提示:Strings must be encoded before hashing,即字符串必须在哈希之前进行编码

修改代码为:

import hashlib  
  
for i in range(32, 127):  
    for j in range(32, 127):  # 注意:你可能也需要一个循环来遍历j的值  
        for k in range(32, 127):  
            m = hashlib.md5()  
            # 将字符串转换为字节串  
            s = b'TASC' + chr(i).encode() + b'O3RJMV' + chr(j).encode() + b'WDJKX' + chr(k).encode() + b'ZM'  
            m.update(s)  
            des = m.hexdigest()  
            if 'e9032' in des and 'da' in des and '911513' in des:  
                print(des)  # 如果满足条件,打印哈希值

输出结果为:

flag{e9032994dabac08080091151380478a2}

十三、Alice与Bob

题目:

密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。
就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希提交答案。
 注意:得到的 flag 请包上 flag{} 提交

分解大整数网站:https://www.lddgo.net/math/decomposition-prime

98554799767 是 合数
98554799767 = 101999 * 966233

组合一下,小的放前面,大的放后面,101999966233再进行32位小写MD5编码:

MD5解码在线网站:https://www.cmd5.com/hash.aspx

flag{d450209323a847c8d01c6be47c81811a}

十四、大帝的密码武器

题目:

公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。

密文:ComeChina

将密文扔到在线工具中枚举试错,当偏移量为13的时候得到一个“有意义的单词”:security,安全

凯撒在线加解密:http://www.hiencode.com/caesar.html

故可知偏移量为13,注意这里的两个C是大写,所以要把解出来的明文中的两个p换成大写提交

flag{PbzrPuvan}

十五、rsarsa

题目:

Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.


p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e =  65537
c =  83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034

Use RSA to find the secret message

正常去python中,先下载gmpy2

gmpy2 是一个用于任意精度算术的 Python 扩展模块,它提供了对 GMP(GNU 多精度运算库)的接口。解出d之后解出M即为答案

python代码:

pip install gmpy2
import gmpy2
e = 65537
p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
n = p*q
#密文
C = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
 
d =gmpy2.invert(e,(p-1)*(q-1))
print(d)
#求明文
print("")
M = pow(C,d,n)    #快速求幂取模运算
print(M)

flag{5577446633554466577768879988}

十六、Windows系统密码

文件名:pass.hash

改成:pass.txt

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:bef14eee40dffbc345eeb3f58e290d56:::

很像内存取证中的hash命令的结果

十七、

posted @ 2024-05-06 12:00  果粒就要果粒多  阅读(1492)  评论(0)    收藏  举报