第一题 caesar
下载文件是一个txt文件,看到没有什么想法,看末初的wp使用凯撒穷举
使用凯撒穷举的脚本跑一下,得到的第94种可能是flag
附上末初的脚本:
def change(c,i):
num=ord(c)
if(num>=33 and num<=126):
num=33+(num+i-33)%(94)#126-33=93
return chr(num)
def kaisa_jiAmi(string,i):
string_new=''
for s in string:
string_new+=change(s,i)
print(string_new)
return string_new
#本题有种暴力解密感觉
def kaisa_jiEmi(string):
for i in range(0,94):
print('第'+str(i+1)+'种可能:',end=' ')
#区别在于 string 是该对象原本就是字符串类型, 而 str()则是将该对象转换成字符串类型。
kaisa_jiAmi(string,i)
#你要知道input输入的数据类型都是string
def main():
print('请输入操作,注意不是平常26种:')
choice=input('1:恺撒加密,2:凯撒穷举解密.请输入1或2:')
if choice=='1':
string=input('请输入需要加密字符串: ')
num=int(input('请输入需要加密的KEY: '))
kaisa_jiAmi(string,num)
elif choice=='2':
string=input('请输入需要解密字符串: ')
kaisa_jiEmi(string)
else:
print('输入错误,请重试')
main()
if __name__=='__main__':
main()
第二题 KO
打开文件是一段Ook编码,用在线解码工具解码
得到flag{welcome to CTF}
第三题 single dog
下载后是一张图片(是阿令!),压缩成zip文件
将文件用7Z打开,得到文本文件
查看大佬的wp得知是jjencode与aaencode解密
第四题 我吃三明治
将图片用 010打开,发现有jpg(FF D9开头 FF D8结束)
看到后面一段编码,看起来像base64编码,但是缺少了等号,试了一下果然不对,然将其放入base32解密,得到了答案
第五题 你有没有好好看网课
得到文件flag1里面有两个压缩文件夹都需要密码
打开flag3压缩文件有一个文本文件和视频,但是都需要密码,题目没有给密码提示,这时候看看flag3的属性,在注释上面找到压缩包密码是六位数字
用ARCHPR解密得到密码183792
打开文本文件,得到以下内容,一开始以为那几个数字会是flag2压缩文件的密码,结果试了一下啊不是
就开始看视频,用0.25倍速观看得到 两个信息,第一个是运用敲码表,第二个是明显的base64编码,将两个解密得到的结果(wllmup_up_up)输入
得到一张图,将图片用WinHex打开拉到底就可以看到flag
第六题 docx
开始下载了文件不知道为啥浏览器给它自动打开了
下载文件后发现没啥有用的东西,又在打开方式上看到了可以解压打开,猜测可能是个压缩包
用7Z打开后,确实里面有隐藏文件夹,打开第二个文件夹发现里面有很多图片,一个个打开,在第23个图片上找到了flag
第七题 gakki
解压打开后flag.txt文件需要密码,暴力破解得到密码8864
打开txt文件,发现是一堆乱七八糟的字符,然后就没了想法,看了wp知道是字频统计并得到了脚本
脚本如下
字频统计的源代码
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
strings = open('./flag.txt').read()
result = {}
for i in alphabet:
counts = strings.count(i)
i = '{0}'.format(i)
result[i] = counts
res = sorted(result.items(),key=lambda item:item[1],reverse=True)
for data in res:
print(data)
for i in res:
flag = str(i[0])
print(flag[0],end="")
运行后得到flag
总结:运用一些脚本解题,学习到jjencode与aaencodo解码和Ook编码解码,涉及了一点点视频内容的学习