BJDCTF2020-MISC记录
1.签到
1.得到无类型文件,改后缀为zip,里面还有一个zip,打开显示格式错误
2.010查看发现是png,改后缀为png,得到一张二维码
3.QR扫码得到flag
2.藏藏藏
1.无类型文件,改后缀为rar,打开后得到txt和jpg
2.在jpg文件末尾发现zip,手撕,解压,得到一个doxc,打开后有一个二维码
3.二维码扫完就是flag
3.认真你就输了
1.无类型文件,改后缀为rar,得到一个表格,打开提示有错误,打开后发现xls文件的内容应该是PK的源码
2.复制下来用010打开,发现文件源码太乱了,感觉应该不是这么做的
3.010查看表格,发现其中应该含有一个flag.txt文件,改后缀为zip,在xl-charts中找到flag.txt
4.你猜我是个啥
1.无类型文件,010查看,改后缀为png,得到二维码
2.扫描之后什么都没有
3.010打开,提示末尾有多余的data,末尾数据就是flag
5.鸡你太美
1.得到两个gif,副本无法正常打开,010打开,发现副本缺少gif的文件头
2.补全,flag就在gif上
flag{zhi_yin_you_are_beautiful}
6.纳尼
1.改后缀为rar,得到一个txt和一个gif,gif打不开,010查看,很明显是缺文件头
2.加上文件头后,发现动图,把所有的字符串总结在一起,用stegsolve查看每一帧
3.base64解码,得到flag(注意flag的格式)
7.just a rar
1.改后缀为rar,得到加密的rar,根据名字,四位数字密码爆破
2.得到gif,在属性-详细信息中发现flag
8.一叶障目
1.改后缀为rar,打开后得到一张png
2.CRC报错,用脚本爆破CRC
#coding=utf-8
import zlib
import struct
#读文件
file = '1.png'
fr = open(file,'rb').read()
fw = open("repaired.png",'wb')
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.write(newpic)
fw.close