buuctf学习记录-crypto(001-010)

做题的顺序是从最旧开始的,这样比较有规律,做完看着也舒服。
上周有事忙碌,web题的下一组没肝完,先更一篇crypto的简单题~


001 看我回旋踢

解答:常规凯撒加密,偏移13。
工具是大家常用的:CTFCrakTools pro
在这里插入图片描述


002 变异凯撒

题目:afZ_r9VYfScOeO_UL^RWUc
解答:题目说是变异凯撒,那么就对比一下开头几个字符与flag的数值差,可以看到是偏移数值以step 1的步长逐渐增长。
在这里插入图片描述
写个小脚本解密一下。

#我弄了一个自己用的类,可以直接写里面的方法
class JZcaesa():
    def bianyi(self,str,offset,step):
        result=""
        for i in str:
            result+=chr(ord(i)+offset)
            offset+=step
        return result
str="afZ_r9VYfScOeO_UL^RWUc"
flag=JZcaesa().bianyi(str,5,1)
print(flag)   
#flag{Caesar_variation}  

003 Url编码

题目:%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
解答:用hackbar就可以url解码。
flag{and 1=1}
在这里插入图片描述


004 传感器

题目
在这里插入图片描述

解答:传感器,提示曼联,数据由5、6、9、a组成,可以知道这就是曼彻斯特编码。

使用工具获取结果。
(工具下面附的那个内容链接里有,我就不附了)
在这里插入图片描述

或者用脚本:

cipher='5555555595555A65556AA696AA6666666955'
def iee(cipher):
    tmp=''
    for i in range(len(cipher)):
        # eval讲十六进制字符串转为数值(本质是表达式计算)
        # 然后bin再转为二进制,[2:]去掉‘0b’,zfill(4)指定字符串长度为4(如:110-->0110)
        a=bin(eval('0x'+cipher[i]))[2:].zfill(4)
        tmp=tmp+a[1]+a[3]
        #print(tmp)
    #8位一组,反向,再转十六进制
    plain=[hex(int(tmp[i:i+8][::-1],2))[2:] for i in range(0,len(tmp),8)]
    print(''.join(plain).upper())

iee(cipher)

进一步学习

crypto之曼彻斯特编码


005 robomunication

题目:xxxxxx
解答:给了一个mp3
mp3,听着像摩斯,记录一下。
.... . .-.. .-.. --- .-- .... .- - .. ... - .... . -.- . -.-- .. - .. ... -... --- --- .--. -... . . .--.

解密得到:HELLOWHATISTHEKEYITISBOOPBEEP
(翻一下就是,你好,key是什么,是BOOPBEEP)

flag{BOOPBEEP}


006 MD5

题目:e00cf25ad42683b3df678c61f42c6bda
解答
找个线上md5爆破:md5爆破网址
在这里插入图片描述

flag{admin1}

MD5CrackSp:一个小的爆破md5的工具,可以爆破简单密码的md5。(一般不建议)
在这里插入图片描述


007 Quoted-printable

题目:=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
解答:Quoted-printable:可打印字符引用编码
写脚本解一下:

class JZcrypto_else():
    def quoted(self,encode_str):
        decode_str=quopri.decodestring(encode_str)
        return decode_str
        
str="=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6"
#需要输出中文,就需要后面的.decode('utf8')
flag=JZcrypto_else().quoted(str).decode('utf8')
print(flag)
#最后的flag:那你也很棒哦

008 丢失的MD5

题目:xxxxxx
解答:给了一个md5的爆破脚本。python2的,运行后就出flag。
在这里插入图片描述
在这里插入图片描述


009 传统知识+古典密码

题目
在这里插入图片描述

解答:六十甲子顺序表:
在这里插入图片描述

辛卯28,癸巳30,丙戌23,辛未8,庚辰17,癸酉10,己卯16 ,癸巳30 ,然后是加甲子 60,即88 90 83 68 77 70 76 90,得到八个数字,尝试用ASCII码解密,得到XZSDMFLZ。

题目又说古典密码。古典密码主要有栅栏,凯撒,培根,摩丝等等。
尝试凯撒解密,没有结果。尝试栅栏解密,获取两个xsmlzdfz,xmzfsldz,也不对。把栅栏的两个结果分别凯撒尝试一下,出了结果。

最终步骤:先是栅栏解密得XMZFSLDZ(key=2),然后再凯撒解密,得SHUANGYU(key=5)

flag{SHUANGYU}


010 password

题目
在这里插入图片描述

解答
社工题,可以猜一下。
10个字符,名字首字母+生日刚好10个字符。尝试正确。
flag{zs19900315}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值