BUUCTF2023.1.26

第一题 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编码解码,涉及了一点点视频内容的学习

 

 

 

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值