暑假集训7.02
[NISACTF 2022]bqt
一个没有后缀的文件,用010打开发现是pdf
打开有一张图片,删掉图片有密文
应该是十六进制转字符串,但每组数都大于128(ascii的范围是0-127),所以每个数都减去128,写脚本,得到flag
m = "c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd" n="" for i in range(0,len(m),2): hex = m[i:i+2] n+= chr(int(hex,16)-128) print(n)
[CISCN 2018]Picture
一张png
用010打开,发现在底部有zlib的文件头,用binwalk -e分离出来,用记事本打开后得到base64的密文
转成16进制,写成文件,是zip,还需要密码
提示密码是python一个数被0除的异常报错
打开zip,得到一个密文
进行UUencode解密,得到flag
[闽盾杯 2021]Modbus的秘密
流量分析题,原题有提示:最长的Modbus/tcp,modbus是一种通讯协议,可以直接在Wireshark进行过滤搜索,再进行长度排序找到最长的
追踪最长的tcp流,得到flag
[鹤城杯 2021]New MISC
给了一个pdf文件,没找到什么信息,应该是pdf隐写
pdf隐写有两种方式
这题用wbStego4.3open解决(这个工具有点问题,打开之后无法关闭)
得到txt文件,打开得到flag
[鹤城杯 2021]A_MISC
一个压缩包,有密码,直接爆破错了
得到png,给了网盘的链接,但没密码,把png加长得到密码
网盘下载得到的是流量包,是http的时间盲注
我不会时间盲注,徒手记下了每组的最后一位的值,102 108 97 103 123 99 100 50 99 51 101 50 102 101 97 52 54 51 100 101 100 57 97 102 56 48 48 100 55 49 53 53 98 101 55 97 113 125,转字符串得到flag
然后是大佬们的做法,用tshark提取数据
然后用脚本跑出flag
with open('data.txt', 'r', encoding='UTF-8') as f: data = f.read().strip().split('\n') flag = [0 for i in range(50)] for i in data: flag[int(i[73:i.find(',', 73)])] = int(i[i.find('=') + 1:i.find(',sleep')]) print(bytes(flag).decode())
Misc_water
给了一个png和加密的zip
用binwalk分析后,分离出一张图片,但没什么用
用010打开,发现除了末尾的png数据前面还有一段被倒序的jpg数据
提取出来,用脚本倒序,得到jpg
f=open('66.jpg','rb') ff=open('6,jpg','wb') b=f.read()[::-1] ff.write(b) f.close() ff.close()
题目提示water,猜测盲水印,对jpg进行提取水印,得到密码
打开zip,得到jpg,用010查看发现是png,还被修改了宽高,显示出错,用脚本爆破图片的宽高
import zlib import struct filename = '1.png' with open(filename, 'rb') as f: all_b = f.read() crc32key = int(all_b[29:33].hex(),16) data = bytearray(all_b[12:29]) n = 4095 for w in range(n): width = bytearray(struct.pack('>i', w)) 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] crc32result = zlib.crc32(data) if crc32result == crc32key: print("宽为:",end="") print(width) print("高为:",end="") print(height)
修改宽高,得到flag