前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >buuctf_crypto部分wp(6.21更)

buuctf_crypto部分wp(6.21更)

作者头像
回天
发布2023-04-25 15:04:17
3450
发布2023-04-25 15:04:17
举报
文章被收录于专栏:Ga1@xy's W0r1dGa1@xy's W0r1d

[BJDCTF2020] 这是base??

  • 考点:换表base64

题目附件中给出的文档明确指出本题的考点,并且给了一个码表,我们需要对照给的密文和码表还原出原来的base64密文才能进行解密

附原表

J8Y5xH.png
J8Y5xH.png

脚本还原以下即可

代码语言:javascript
复制
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: '='}
a=''
for i in range(65,91):
    a+=chr(i)

for i in range(97,123):
    a+=chr(i)

for i in range(48,58):
    a+=chr(i)

ch='FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw'
s=''
for i in ch:
    s+=a[list(dict.values()).index(i)]

print s.decode('base64')

运行脚本得到flag:flag{D0_Y0u_kNoW_Th1s_b4se_map}

[WUSTCTF2020] B@se

  • 考点:未知位置换表base64

下载附件得到txt文件,其中给了密文和换了表的base64码表,但是表中缺失了四位

手动查一下发现缺少了j u 3 4这四位,通过对比密文,可以发现在缺少的四位中,密文只含有j 3这两项,所以我们只需要枚举这两个字符在缺失的四位中的排列位置,写个脚本每次手动改一下就行

代码语言:javascript
复制
d='JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rs3**jkxyz012789+/'
a=''
for i in range(65,91):
    a+=chr(i)

for i in range(97,123):
    a+=chr(i)

for i in range(48,58):
    a+=chr(i)

ch='MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD'
s=''
for i in ch:
    s+=a[d.index(i)]

s+='=='
print s.decode('base64')

经过多次尝试,最终发现3在第一位,j在第四位的时候可以成功解得flag

J8tpss.png
J8tpss.png

flag:flag{base64_1s_v3ry_e@sy_and_fuN}

rot

  • 考点:rot13 & md5爆破

下载附件得到txt文件,其中写了一长串的数字,第一个想法就是将每个数字都转换成对应的ASCII码,但是写脚本时每行一个数字比较方便,所以我们先将txt中多余内容删去,然后将空格替换为回车,此处就涉及到了如何替换成回车:回车在替换时可用^p表示

替换后写脚本,将数字转换为对应的ASCII码,由于正常转换会出现不可显示的字符,而且本题题目的rot,我们尝试rot13

代码语言:javascript
复制
out=''
f=open('rot.txt','r')
while 1:
    a=f.readline().strip()
    if a:
        out+=chr(int(a)-13)
    else:
        break

print out

得到结果如下

代码语言:javascript
复制
FLAG IS flag{www_shiyanbar_com_is_very_good_????}
MD5:38e4c352809e150186920aac37190cbc

刚开始我以为上面的就是flag,但是交上去后却不对,而且还给了md5值,想到需要通过下面的md5值将完整的flag爆破出来,即求出flag中表示的字符,而且在线网站也无法还原这道题中的MD5,所以写脚本

代码语言:javascript
复制
import hashlib

count=0
md5='38e4c352809e150186920aac37190cbc'
str='flag{www_shiyanbar_com_is_very_good_'
while count==0:
    for i in range(32,127): # 可显示字符ASCII码的对应值为32~126
        a=chr(i)
        for i in range(32,127):
            b=chr(i)
            for i in range(32,127):
                c=chr(i)
                for i in range(32,127):
                    d=chr(i)
                    flag=str+a+b+c+d+'}'
                    m=hashlib.md5(flag)
                    m=m.hexdigest()
                    if cmp(m,md5)==0:
                        count=1
                        print flag

运行脚本得到flag:flag{www_shiyanbar_com_is_very_good_@8Mu}

[ACTF_2020] crypto-classic1

  • 考点:键盘密码 & 维吉尼亚密码

下载附件得到hint.txt和一个加密过的压缩包,查看hint.txt,是键盘密码的一种,由空格分隔的每个字符串都包上了键盘的一个字母,比如xdfv包上了c,将这留个字母解出来拼在一起得到压缩包密码:circle 压缩包名字提示为维吉尼亚加密,但是没有给密钥,我们已知flag的格式为ACTF{},即密文中的SRLU对应明文的ACTF,而维吉尼亚加密有一个特点(划重点),可以通过密文和明文来推导出密钥,我们将已知对应明文部分的密文(本题中即为SRLU,对应ACTF)作为明文,将已知的明文(即ACTF)作为密钥进行解密

JNvZyd.png
JNvZyd.png

将得到的内容去重,即为加密的密钥,本题中即sp,再用sp作为密钥解密即可得到flag,不过需要注意的是在解密时我们需要将那几个特殊符号{}_用相同的字母替换掉,比如我都用b替换掉

JNveOA.png
JNveOA.png

再将得到的明文中对应的位置换回原来的符号即可得到flag flag:flag{what_a_classical_vigenere}

yxx

  • 考点:xor

本题和异性相吸那题差不多,可能题目名字里少了个x(2333

下载附件得到两个txt文件,用010editor打开发现长度相同,直接尝试xor,即可得到flag

代码语言:javascript
复制
a = '6C 6F 76 65 6C 6F 76 65 6C 6F 76 65 6C 6F 76 65 6C 6F 76 65 6C 6F 76 65 6C 6F 76 65 6C 6F 76 65'.replace(' ','')
b = '0A 03 17 02 56 01 15 11 0A 14 0E 0A 1E 30 0E 0A 1E 30 0E 0A 1E 30 14 0C 19 0D 1F 10 0E 06 03 18'.replace(' ','')
flag = ''
for i in range(0,len(a),2):
    x = '0x' + a[i:i+2]
    y = '0x' + b[i:i+2]
    flag += chr(int(x,16) ^ int(y,16))

print flag

flag:flag{xor_xor_xor_biubiubiu}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [BJDCTF2020] 这是base??
  • [WUSTCTF2020] B@se
  • rot
  • [ACTF_2020] crypto-classic1
  • yxx
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档