目录
[BJDCTF2020]鸡你太美
[BJDCTF2020]一叶障目
[SWPU2019]神奇的二维码
梅花香之苦寒来
[BJDCTF2020]纳尼
下载文件
真没树枝,第一张是一个动图,第二张无法打开,使用010 editor打开这两张图
可以发现这个副本少了四个字节GIF0,添加
保存,查看图片
得到flag flag{zhi_yin_you_are_beautiful}
下载文件
使用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
打开生成的1.png.png
得到flag flag{66666}
下载文件
一个二维码,使用QR_research扫描
flag不在这,使用kali的binwalk工具查看
四个压缩包,其中18394.rar需要密码,打开17012文件夹,里面一个flag.doc,内容是base64加密内容,解密(需要解密几十次),还是得上脚本
import base64
def decode(f):
n = 0;
while True:
try:
f = base64.b64decode(f)
n += 1
except:
print('[+]Base64共decode了{0}次,最终解码结果如下:'.format(n))
print(str(f,'utf-8'))
break
if __name__ == '__main__':
f = open('./base64.txt','r').read()
decode(f)
comEON_YOuAreSOSoS0great是第四个压缩包的解压密码,解压
一个mp3文件,Audacity打开
摩斯密码,'-'代表长, '.'代表短, '/'代表空格
--/---/.-./..././../.../...-/./.-./-.--/...-/./.-./-.--/./.-/.../-.--
复制到摩斯密码在线
转小写得到flag
得到flag flag{morseisveryveryeasy}
下载文件 (这题挺有意思)
使用010 editor打开
可以看到FF D9后面全是十六进制内容,复制到在线16进制转文本
得到的内容挺有意思,应该是坐标,是不是就可以画图呢?把文本复制到1.txt中,使用gnuplot工具画图(我这里使用的是kali的)
但是gnuplot无法识别带括号和逗号的数据,还需要对数据进行处理,脚本
with open('erweima.txt','r')as a:
a=a.read()
a=a.split()
tem=''
for i in range(0,len(a)):
tem=a[i]
tem=tem.lstrip('(')
tem=tem.rstrip(')')
for j in range(0,len(tem)):
if tem[j]==',':
tem=tem[:j]+' '+tem[j+1:]
print(tem)
运行脚本,把得到的结果保存到erweima_output.txt中,使用画图工具进行画图
得到一个二维码,使用QR_research扫描
终于得到flag flag{40fc0a979f759c8892f4dc045e28b820}
下载文件
一个动图,但是打不开,使用010 editor查看
开头9a,联想到GIF89a,所以在前面插入四个字节: 47 49 46 38 (GIF8)
保存查看
动态图闪的有点快,使用Stegsolve逐帧查看
第一帧:
第二帧:
第三帧:
第四帧:
把这四帧的内容拼在一起: Q1RGe3dhbmdfYmFvX3FpYW5nX2lzX3NhZH0= 复制到base64在线
得到flag flag{wang_bao_qiang_is_sad}