BJDCTF2020

# [BJDCTF2020]藏藏藏
打开题目后发现
在这里插入图片描述

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

[BJDCTF2020]鸡你太美

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

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

在这里插入图片描述

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

1
flag{zhi_yin_you_are_beautiful}

[BJDCTF2020]纳尼

在这里插入图片描述

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

[BJDCTF2020]认真你就输了

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

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

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

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

1
flag{M9eVfi2Pcs#}

[BJDCTF2020]just_a_rar

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

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

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

[BJDCTF2020]一叶障目

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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??

1
2
3
4
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,脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
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函数没有发现什么有用的信息 检索程序的字符串后 发现了一串有用的东西
在这里插入图片描述

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

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

[BJDCTF2020]signin

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

直接16进制转化拿到flag

1
BJD{We1c0me_t4_BJDCTF}

Prev:
11111
Next:
BUU easyre CrackRTF
catalog
catalog