一、Unencode
得到的密文:89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM]
看题目名字,我们可以知道这是一个解码的题目,但是unencode 好像是不可解码的意思,我们可以对照着解码方式看一下哪个更适合,可以进行尝试一下CTF必备技能之编码大全-腾讯云开发者社区-腾讯云 (tencent.com)
可以对照着其中的编码方式看一下,找出对应的解码方式,可以找到这是uuencode
二、[AFCTF2018]Morse
得到摩丝密文为:
得到61666374667B317327745F73305F333435797D
上交之后不是答案,可能还需要进一步解码,很可能就是ASCII编码,同时里面含有字母,那么应该是要按16进制读取。
s='61666374667B317327745F73305F333435797D'
print(len(s))
for i in range(0,len(s),2):
x=s[i:i+2]
#print(x)
x=int(x,16)
print(chr(x),end='')
就可以得到答案:afctf{1s't_s0_345y},但是要换成flag{}上交。
三、还原大师
这个题目没有很多信息,直接爆破,涉及的字符串是大写字母和数字。
import requests
from hashlib import md5
m='TASC?O3RJMV?WDJKX?ZM'
x1=[i for i in range(48,59)]
x2=[j for j in range(65,91)]
x=x1+x2
for k1 in x:
for k2 in x:
for k3 in x:
m='TASC'+chr(k1)+'O3RJMV'+chr(k2)+'WDJKX'+chr(k3)+'ZM'
md5_url = md5(m.encode('utf8')).hexdigest()
if 'e903' in md5_url and '4dab' in md5_url and '8a' in md5_url and '08' in md5_url and '51' in md5_url and '8a' in md5_url:
print(md5_url)
print(m)
之后把小写字符换成大写字母,上交就行。flag{E9032994DAB AC08080091151380478A2}
四、异性相吸
这个题目是没有什么思路的,不知道该怎么下手,参考了一下BUUCTF——异性相吸 题解_asadsasdasdasdasdasdasdasdasdasdqwesqf-CSDN博客
这篇文章中提到的一个思路是将异性与01关联起来,将密文和明文转成二进制进行异或就可以得到二进制的明文,再将其转化明文就是答案
首先,先将密文和明文翻译成二进制,编程时将注意将空格去除,翻译时每八位加上空格汉字二进制转换器,字符与2-36进制相互转换 - 千千秀字 (qqxiuzi.cn)
a = '0010000000011111001000000000001100001000000001000001001001010101000000110001000001010100010110000100101101011100010110000100101001010110010100110100010001010010000000110100010000000010010110000100011000000110010101000100011100000101010101100100011101010111010001000001001001011101010010100001010000011011'
b = '01100001 01110011 01100001 01100100 01110011 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01100001 01110011 01100100 01110001 01110111 01100101 01110011 01110001 01100110'
b=b.replace(' ','' )
print(len(a),len(b))
c = ''
count=0
for i in range(len(a)):
if a[i] == b[i]:
c += '0'
else:
c += '1'
print(c)
用flag替换后上交即可