DASCTF 冰墩墩
SimpleFlow
一下子就能发现传了一个含有flag.txt的压缩包,需要密码,字典简单跑一下就发现是PaSsZiPWorD
解压后得到结果DASCTF{f3f32f434eddbc6e6b5043373af95ae8}
当然也可以在流中找到密码的base64
冰墩墩
给出的文件太多了,肯定不能一个一个看,因此先写个脚本输出到一个文件里看看
import os path = "E:\\Download\\misc\\BinDunDun" files = os.listdir(path) w = open("res.txt","a") for f in files: r = open((path+"\\"+f),"r") w.write(f+r.read()+"\n") r.close() w.close()
可以看到有start和end
直接将start里的数据取出来看看,发现明显的zip文件头504B
start中一共15位,首位可以补一个0,接下来直接查看m9312r95cr.txt
,其中的数据为1100000100
发现如果首位补满0凑够16位,就变成0000001100000100
,每4位转成hex就是0304
,这样组成了完整的zip文件头504B0304
写个脚本,将每块数据用首位0补满16位,以hex输入到文件中
import re pattern_file = re.compile("view is (.*?)\.txt") pattern_data = re.compile("(.*?) =>") path = "E:\\Download\\misc\\BinDunDun" filename = "start.txt" data = "" while filename != "end.txt": ff = open(path+"\\"+filename,"r") rea = ff.read() temp_data = re.findall(pattern_data,rea)[0] data += "0"*(16-len(temp_data))+temp_data filename = re.findall(pattern_file,rea)[0]+".txt" ff.close() print(len(data)) temp = "" for i in range(0,len(data),4): temp += str(hex(int(data[i:i+4],2)))[2:] with open("res.txt","w") as fw: fw.write(temp)
将hex利用winhex直接生成zip文件
生成zip成功,解压
有个pyc文件,先反编译一下看看
是一个画图代码,就是画一个冰墩墩
查看隐写给出的信息也不对
另一个文件用winhex查看发现是jpg,文件头不对
把FDDDDD
改成FFD8FF
即可,打开后也是一个冰墩墩
那只能猜测是有隐写了,stegdetect检查发现是jphs隐写,但是爆破不出密码,卡住了 ,但是爆出密码应该就可以直接获得flag了。
后续感谢@Pl4y_w1th_M3大佬告诉我 原来我早就解出来了 只是没去看新目录下导出的文件=^=
解出来是一个base64
REFTQ1RGe0dvb2RfSm9kX0dpdmVfVGhlX0ZGRkZMQGdfVG9fWW91IX0=
转化一下得到DASCTF{Good_Jod_Give_The_FFFFL@g_To_You!}