BUUCTF
1.MD5
题目名称就是MD5,这个题目肯定和md5密码有关,下载题目,打开后发现这确实是一个md5加密的密文
Md5在线解密网站:md5在线解密破解,md5解密加密
经过MD5在线解密网站解密后,获取到flag为:flag{admin1}
2.一眼就解密
这里可以看出,这是一个base64的编码,Base64编码是使用包含大小写字母、数字和特殊字符的64个字符集
Base64在线解密网站:https://base64.us/
经过Base64在线解密网站解码后,获取到flag为:flag{THE_FLAG_OF_THIS_STRING}
3.url编码
题目名称就是url编码,这个题目肯定和url编码有联系,下载题目,打开后发现这确实是一个url编码,URL编码使用ASCII字符集。除了英文字母和数字,它还包含一些特殊字符,例如!、*、'、(、)、-和_。
url在线解码网站:在线url网址编码、解码器-BeJSON.com
经过url在线解码网站解码后,获取到flag:flag{and 1=1}
4.看我回旋踢
下载题目,看到这串字符,猜测可能是之前讲过的哪一个密码呢?栅栏的话,不对,因为flag是四个字符,这个题目给出也是4个字符,这里没有进行移位,看到有字母有数字,那么可以猜测 一下是不是凯撒加密,但是凯撒密码只针对26个字母进行移位,数字和符号是不会进行移位的,不管是不是,先尝试进行一下凯撒解密,由于不知道这里是移了几位,可以编写一个脚本,输出所有可能的结果。
s = 'synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}' # 栅栏解密后的字符串,去除了“{}”
string = '' # 用于保存解密后的结果
for j in range(26): # 遍历所有可能的位移量
n = list(s) # 在每个循环开始前重置 n
for i in range(len(s)): # 遍历字符串中的每个字符
if n[i].islower():
n[i] = chr((ord(n[i]) - 97 + j) % 26 + 97)
elif n[i].isupper():
n[i] = chr((ord(n[i]) - 65 + j) % 26 + 65)
string = ''.join(n)
print(string) # 输出每个尝试的解密结果
运行脚本,输出所有进行移位后的结果,发现有在偏移位为13位的时候,可以得到一个flag,输入flag测试一下,看猜测是否为真
这里显示已经解出来了,那说明这个flag是正确的,那也就是说之前的猜测为真,这确实是一个凯撒加密。
所以这道题的flag为:flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}
5.摩丝
题目名称就是摩丝,这个题目肯定和摩丝密码有关,下载题目,打开后发现这确实是一个摩丝密码加密的密文
摩丝密码在线解密网站:在线摩斯密码翻译器
将密文经过摩丝密码在线解密网站解密之后,获取到flag为:flag{ILOVEYOU}
6.Password
下载题目,发现题目里面就简单给了以下信息,题目中说到key格式为key{xxxxxxxxxx},大胆猜一下,给的key的格式中有10个x,给的姓名张三,英文缩写为zs,生日19900315,zs19900315连在一起也是10个字符,不确定对不对,把flag包装成:flag{zs19900315},提交试试
提交成功,说明猜测正确,flag就是flag{zs19900315}
7.变异凯撒
凯撒密码:简而言之是按固定值偏移替换
变异凯撒可能偏移量不固定,下面来具体分析:
先对应观察一下ASCII码:
afZ_r 对应的ASCII码为:97 102 90 95 114
flag{ 对应的ASCII码为:102 108 97 103 123
对应的偏移量为: 5 6 7 8 9
我们可以发现:偏移量从5开始,逐个+1
key = 'afZ_r9VYfScOeO_UL^RWUc'
j = 5 #第一次位移为5,之后每位位移+1
for i in key:
print(chr(ord(i) + j), end='')
j += 1
运行脚本,得到flag为:flag{Caesar_variation}
8.Quoted-printable
看到题目,不知道这是个什么加密,下载题目,打开后是一串字符
百度一下这个题目,发现Quoted-printable是一种编码方式,Quoted-Printable编码方法,适合所传输数据中,只有少量的非ASCII编码,用一个等号(=)后面加两个数字字符来表示一个非ASCII码字符。
Quoted-printable在线解码网站:http://www.hiencode.com/quoted.html
将密文进行解码后,得到flag为:flag{那你也很棒哦}
9.Rabbit
下载题目,不知道是什么加密方式,可以百度Rabbit加密看看,发现有这个加密,而且这个加密方式有个特点:Rabbit加密开头部分通常为U2FsdGVkX1,而这个密文的开头部分也是U2FsdGVkX1
Rabbit在线解密网站:https://www.woodmanzhang.com/webkit/rabbitencrypt/index.html
将密文在在线网站解码后,得到flag:flag{Cute_Rabbit}
10. 篱笆墙的影子
下载题目,暂时不知道是什么加密方式,前面有说到过栅栏密码,可以大胆猜测这个题目是栅栏加密,由于题目需要flag需要解为flag{}的形式
所以felhaagv解密为flag的形式:
f l a g
e h a v
所以可以看出该栅栏密码为两行,把密文丢到解密工具解密
得到flag为:flag{wethinkwehavetheflag}
11.RSA
下载题目,是一个RSA的加密,公钥e,两个素数p,q,这里可以直接使用RSA解密工具进行解密
Public Exponent这里要使用16进制的数,公钥e=17的话,就应该填入十六进制的11,给出p,q,e的话直接填入,再点击Calc.D,获得d
D即是需要获取的flag,所以flag为:flag{125631357777427553}
12.丢失的MD5
下载题目,解压后打开发现是一个md5的python脚本
把脚本放到pycharm里面打开,发现运行不了, print报错
查询资料发现,不加括号调用print就是python2,加括号调用print就是python3,因此猜测这个脚本要用python2的环境运行
将脚本放到python2的环境中运行,运行成功,将运行结果用flag{}包装,提交看是否能成功
提交成功,则flag就为:flag{e9032994dabac08080091151380478a2}