又是misc

[RCTF2019]draw

文本文档什么 cs pu lt 90 fd 500 有点熟悉 是你小乌龟
https://www.calormen.com/jslogo/ 配合这个使用将文档内容粘贴进去

225.PNG

蜘蛛侠呀

什么玩意抓包文件哪有蜘蛛侠(・∀・(・∀・(・∀・*)
不对 所有icmp包后面都跟了一串数据 tshark提取

1
tshark -r out.pcap -T fields -e data > data.txt

一个十兆多的文档很划算9兆的文件生成10兆的文档 有重复

226.PNG

搞脚本去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
with open('data.txt', 'r') as file:
res_list = []
lines = file.readlines()
print('[+]去重之前一共{0}行'.format(len(lines)))
print('[+]开始去重,请稍等.....')
for i in lines:
if i not in res_list:
res_list.append(i)
print('[+]去重后一共{0}行'.format(len(res_list)))
print(res_list)

with open('data1.txt', 'w') as new_file:
for j in res_list:
new_file.write(j)

227.PNG

六万多行直接没掉了 因为wireshark是直接将十六进制导出还得转一下

1
2
3
4
5
6
import binascii

with open('data1.txt','r') as file:
with open('data2.txt','wb') as data:
for i in file.readlines():
data.write(binascii.unhexlify(i[:-1]))

十六转字符
将$$START$$ 和首末行 还有换行删掉 用word 查找替换 换行符是^p
base64 解一下是压缩文件

228.PNG

1
2
3
4
5
import base64

with open('data2.txt','rb') as file:
with open('data.zip','wb') as new_file:
new_file.write(base64.b64decode(file.read()))

用脚本将其转为base64在写入压缩文件中解压缩

终于看到蜘蛛侠了 然后就不会了看别人的去
这是时间隐写 用Linux下的identify -format “%T” flag.gif
得到这么一串
2050502050502050205020202050202020205050205020502050205050505050202050502020205020505050205020206666
20->0 50->1
011011010100010000110101010111110011000101110100

247.PNG

[MRCTF2020]不眠之夜

一堆散掉的图 拼图题 单张分辨率200*100 共120张 长10张 宽12张 拼起来总图长2000宽1200
用momtage 和gaps

1
2
montage *jpg -tile 10x12 -geometry 200x100+0+0 flag.jpg
gaps --image=flag.jpg --generations=40 --population=120 --size=100

248.PNG

[ACTF新生赛2020]明文攻击

解压缩拿到图和包 题目描述明文攻击
图片010打开发现 末尾一段类似压缩包的在最后一个32后面添加文件头50 4B 拿到压缩包

249.PNG

俩包CRC值是一样的

250.PNG

也说了明文攻击很明显了 用那个advanced什么的来跑就可以了

251.PNG

[安洵杯 2019]easy misc

read里面一大堆的英语文档 应该是存在字频隐写
加密的压缩包打开有一段注释

计算得7+NNULULL 前七位可能是数字用掩码破解

252.PNG

拿到文档

1
2
3
4
5
6
7
8
9
10
b = sSD
c = adE
d = jVf
e = QW8
f = SA=
g = jBt
h = 5RE
i = tRQ
j = SPA
k = 8DS

字频没错了
小姐姐.png 010发现有两张图片分离出来 然后就不会了
看了别人的发现是盲水印

1
2
.\bwm.py decode .\1.png .\2.png res.png
image<.\1.png> + image(encoded)<.\2.png> -> watermark<res.png>

拿到个图

253.PNG

然后拿11.txt的字频 hint里说取前十六个字符 etaonrhisdluygw就是这几个

和刚才的decode.txt进行对照
1
2
3
4
5
6
7
code_str = 'etaonrhisdluygw'
code_dict = {'a':'dIW','b':'sSD','c':'adE ','d':'jVf','e':'QW8','f':'SA=','g':'jBt','h':'5RE','i':'tRQ','j':'SPA','k':'8DS','l':'XiE','m':'S8S','n':'MkF','o':'T9p','p':'PS5','q':'E/S','r':'-sd','s':'SQW','t':'obW','u':'/WS','v':'SD9','w':'cw=','x':'ASD','y':'FTa','z':'AE7'}
base_str=''
for i in code_str:
i = code_dict[i]
base_str += i
print(base_str)

QW8obWdIWT9pMkF-sd5REtRQSQWjVfXiE/WSFTajBtcw=

去掉无效字符- 然后怎么解码都没有结果
看别人的wp都有 离谱玩意

[MRCTF2020]Hello_ misc

图和包 图的红通道0拿到一张图 然后文件分离拿到压缩包

254.PNG

解压成功 然后out.txt都是127 255 63 191 TTL隐写

00 替代63 01 替代127 10 替代191 11 替代255
脚本走

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
with open('out.txt') as f:
lines = f.readlines()
n_num = []
#分析出所有的数
for i in lines:
if i!='\n':
n_num.append(int(i))
#拿到每个TTL值的高位
rlt = ''
for i in range(0,len(lines)):
tmp = bin(n_num[i])[2:]
tmp = '0'*(8-len(tmp)) + tmp
rlt += tmp[0:2]
#得到最终的结果并存到文件中
rlt2 = ''
for i in range(0,len(rlt),8):
rlt2 += chr(int(rlt[i:i+8],2))
with open('fi.txt','w') as f:
f.write(rlt2.rstrip())

拿到压缩包密码

255.PNG

解压后还是一个压缩包再解压 变成一堆的文档 有word doc 那么这个包原本应该是doc格式
改格式可以打开然后全选换一下颜色一些base64码
转码发现都是0和1 将所有的1换成空格

1
2
3
4
5
6
import base64

with open('flag.txt','r') as file:
for i in file.readlines():
line = str(base64.b64decode(i),'utf8')
print(line.replace('1',' '))

flag 到手

257.PNG

[MRCTF2020]Unravel!!

图和包标准配置 还有个音频 wav用010打开然后末尾一串类似于base64的

解码发现是salted开头的 好aes或者des加密

图片分离一下图和压缩包 压缩包解压的到这个

258.PNG

那就是aes了 http://www.metools.info/code/c24.html

259.PNG

拿到解压密码 解压也是wav 丢010 末尾有一串不知道是什么的

直接丢silenteye decode一下 ok

260.PNG

WUSTCTF2020]spaceclub

全选一下就能看出东西来

261.PNG

短的0长的1

011101110110001101110100011001100011001000110000001100100011000001111011011010000011001101110010011001010101111100110001011100110101111101111001001100000111010101110010010111110110011001101100010000000110011101011111011100110011000101111000010111110111001100110001011110000101111101110011001100010111100001111101

二进制转字符就可以了

派大星的烦恼

题目提示了重点在0x22 0x44
010打开将所有的 22 44 复制出来

1
2
3
4
5
6
7
infile = open("321.txt", "r")
outfile = open("312.txt", "w")
for line in infile:
outfile.write(line.replace('22','0'))
#outfile.write(line.replace('44','1'))
infile.close()
outfile.close()

然后替换一下 得到新文本
http://www.txttool.com/wenben_alltrim.asp 去掉空格
https://www.qqxiuzi.cn/zh/daoxu/ 将文本逆序一下
然后二进制转字符
再逆序一下就可以了

[湖南省赛2019]Findme

首先五张图 1.png简直不是图 先解决他
首先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
import zlib
import struct
file = '1.png'
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = 0xC4ED3
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]
#print(data)
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print(width,height)
print(data)
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

用脚本修复一下 然后提示chunk[2][3]提示有问题发现缺了IDAT
添加一下

拿到原图

262.PNG

拿到二维码

263.PNG

获得如下内容ZmxhZ3s0X3

2.png 文件末尾的37 7A 03 04 这个和zip的50 4B 03 04 的文件头有点像

264.PNG

修改试一下 改一个还不行

全部改掉改成PK

265.PNG

解压得到大量文档按大小排618.txt不太对劲 You find it: 1RVcmVfc 第二串

**3.png **
它的crc值和其他人不太一样 抓出来转成字符一下看看

267.PNG

268.PNG

3RlZ30= 第三串

4.png

269.PNG

cExlX1BsY=

5.png

270.PNG

Yzcllfc0lN

1 5 4 2 3 组合

271.PNG

[ACTF新生赛2020]music

说是m4a格式 但是打不开啊 ╮(╯▽╰)╭
010和正经的m4a对比一下

276.PNG

左边正常 右边这题给的文件

很多的A1 用010的十六进制计算工具将所有的A1进行异或

277.PNG

就拿到原本的文件了

听出flag

[UTCTF2020]zero

278.PNG

提示gbk什么的 然后题目也说了zero 零 (・∀・(・∀・(・∀・*)
有个玩意叫做零宽度字符隐写
https://330k.github.io/misc_tools/unicode_steganography.html
就能拿到flag