BJDCTF2020

[BJDCTF2020]藏藏藏

打开题目后发现
在这里插入图片描述

直接打开下面的jpg文件 出现一个二维码 扫码得flag{you are the best!}

[BJDCTF2020]鸡你太美

可以发现打开压缩包里面有两张gif图片
在这里插入图片描述

但是第一个gif图片打不开我们把它拖到010Editor 去查看
我们可以发现 第二个gif图片没有文件头 我们把GIF的文件头补齐 就可以拿到flag
在这里插入图片描述

在这里插入图片描述

47 49 46 38
添加过文件头之后就可以查看图片在这里插入图片描述

flag{zhi_yin_you_are_beautiful}

[BJDCTF2020]纳尼

在这里插入图片描述

同样的少了GIF的文件头 加上文件头后得到一串字符 可用ps或者stegsolve一帧一帧查看
拿到一串字符Q1RGe3dhbmdfYmFvX3FpYW5nX2lzX3NhZH0==
经过base64解密可得CTF{wang_bao_qiang_is_sad}

[BJDCTF2020]认真你就输了

打开后发现一个xls文件
在这里插入图片描述

翻译之后
在这里插入图片描述

在kali里面binwalk一下 发现端倪
在这里插入图片描述

在来一次foremost分离
在这里插入图片描述

flag{M9eVfi2Pcs#}

[BJDCTF2020]just_a_rar

打开是一个密码为四位数的压缩包
在这里插入图片描述

来一波暴力破解
在这里插入图片描述

查看图片属性拿到flag
在这里插入图片描述

[BJDCTF2020]一叶障目

打开得到一个png图片 在windows可以正常打开 但是linux里面不能打开
拖入010 Editor中
在这里插入图片描述

提示CRC报错
直接附上修复脚本

#coding=utf-8
import zlib
import struct
#读文件
file = '1.png'  #注意,1.png图片要和脚本在同一个文件夹下哦~
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",''))
#crc32key = 0xCBD6DF8A #补上0x,copy hex value
#data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xF1\x08\x06\x00\x00\x00')  #hex下copy grep hex
n = 4095 #理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
for w in range(n):#高和宽一起爆破
    width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
            #print(data)
        crc32result = zlib.crc32(data)
        if crc32result == crc32key:
            print(width,height)
            #写文件
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            fw = open(file+'.png','wb')#保存副本
            fw.write(newpic)
            fw.close

在这里插入图片描述

[BJDCTF2020]你猜我是个啥

用010打开
在这里插入图片描述

发现是png文件 修改文件后缀 得到一个二维码
在这里插入图片描述

扫描二维码得到在这里插入图片描述

再次去010中搜索 得到flag在这里插入图片描述

[BJDCTF2020]这是base??

dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}
chipertext:
FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw

在这里插入图片描述

这是标准的base64表
看起来像是字符替换
于是可以写脚本进行替换和decode得到flag,脚本如下

import base64
dict={0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h',33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}
base64_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/']
cipher='FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw'
res=''
for i in range(len(cipher)):
    for j in range(64):
        if(dict[j]==cipher[i]):
            res+=base64_list[j]
print(res)
flag=base64.b64decode(res)
print(flag)

[BJDCTF2020]JustRE

拿到先查壳
在这里插入图片描述

得到信息: 1.无壳 2.32位

32位IDA 打开
main函数没有发现什么有用的信息 检索程序的字符串后 发现了一串有用的东西
在这里插入图片描述

跟进找到 关键函数
在这里插入图片描述

直接看14行代码sprintf补齐
14行输出了aBjdDD2069a4579,19999,0
aBjdDD2069a4579的值就是:BJD{%d%d2069a45792d233ac}
19999和0填入到里面的%d位置
拿到flagBJD{1999902069a45792d233ac}

[BJDCTF2020]signin

打开后
在这里插入图片描述

直接16进制转化拿到flag

BJD{We1c0me_t4_BJDCTF}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1in__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值