Misc 小计

写在前面:

主要是攻防世界和ctfshow的题目,先刷刷攻防世界的题目吧,再去ctfhub按顺序和类型练一练

顺便记录一些工具的使用方法

常见文件头总结

攻防世界

Nepnep 祝你新年快乐啦!

超级简单,点击就送,就用这道题开启misc之旅吧!

去B站看它给的视频,在评论区找到flag

Banmabanma

下载压缩包并解压,发现给了一张图片,斑马斑马

不难看出,这个很像那个条形码,于是网上找一个在线条形码识别网站扫描看看,果然识别结果就是flag

在线阅读条形码

如来十三掌

这个题目偏向于考察密码学,下载下来一个word文件,打开发现是个密文

一下子就看出是与佛论禅密码啦,直接拿去解密

与佛论禅密码

1
MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9

还是一段密文,再结合题目的十三掌,猜测可能是Rot13加密,于是去R13解密看看

str_rot13加密解密

1
ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9

还是一段密文,最后base64解密就得到flag了(搞不懂这个为什么是在misc的分类而不是密码学)

适合作为桌面

下载压缩包,解压得到一个图片,先放进StegSolve看看

哈哈哈直接发现了二维码,而且还是完整的,保存下来,再二维码识别一下

1
03F30D0A79CB05586300000000000000000100000040000000730D0000006400008400005A000064010053280200000063000000000300000016000000430000007378000000640100640200640300640400640500640600640700640300640800640900640A00640600640B00640A00640700640800640C00640C00640D00640E00640900640F006716007D00006410007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100715500577C010047486400005328110000004E6966000000696C00000069610000006967000000697B000000693300000069380000006935000000693700000069300000006932000000693400000069310000006965000000697D000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000312E7079520300000001000000730A0000000001480106010D0114014E280100000052030000002800000000280000000028000000007304000000312E707974080000003C6D6F64756C653E010000007300000000

对照了一下,不是常见的那些文件头什么的,于是粘贴进winhex看看

发现是pyc文件,于是保存下来,再反编译

在线pyc解密

最后,将反编译后的py代码,修改一下再运行一下,得到flag

1
2
3
   print (flag)

flag()

心仪的公司

解压得到.pcapng,不出意外应该是流量分析

用Wireshark打开,检索字符串flag,并没有得到想要的flag格式

然后又想检索一下“{”这个字符,可是在wireshark中一个一个找太慢了,于是在kali中用strings操作

1
strings webshell.pcapng | grep {

哇去,一下子flag就出来了fl4g:{ftop_Is_Waiting_4_y}

pure_color

跟题目对应,打开是个全白的图片

把图片保存下来,用StegSolve打开,发现flag

2017_Dating_in_Singapore

先看题目描述

1
01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-0203040310172431-0102030108152229151617-04050604111825181920-0108152229303124171003-261912052028211407-04051213192625

其中的-有点醒目,先以-为边界分成几行,发现是12行

1
2
3
4
5
6
7
8
9
10
11
12
01081522291516170310172431-
050607132027262728-
0102030209162330-
02091623020310090910172423-
02010814222930-
0605041118252627-
0203040310172431-
0102030108152229151617-
04050604111825181920-
0108152229303124171003-
261912052028211407-
04051213192625

再把附件下载解压,打开里面的pdf文件,发现是个日历

由于之前做过一道书籍密码的题,而且刚才的那串数字可以分成12行,因此这里猜测会不会这道题,原理也差不多呢

把刚才的12串数字当成12月,然后将数字每两个一起隔开

1
2
3
4
5
6
7
8
9
10
11
12
01 08 15 22 29 15 16 17 03 10 17 24 31
05 06 07 13 20 27 26 27 28
01 02 03 02 09 16 23 30
02 09 16 23 02 03 10 09 09 10 17 24 23
02 01 08 14 22 29 30
06 05 04 11 18 25 26 27
02 03 04 03 10 17 24 31
01 02 03 01 08 15 22 29 15 16 17
04 05 06 04 11 18 25 18 19 20
01 08 15 22 29 30 31 24 17 10 03
26 19 12 05 20 28 21 14 07
04 05 12 13 19 26 25

看起来应该是没什么问题,每一组数都没超过30,现在一个个对照日历标记

画得眼睛要瞎了,得到了flag

simple_transfer

下载下来一个.pcap,用wireshark打开检索flag没找到,strings也不行

在wireshark追踪协议也没发现什么,实在没什么思路,于是将这个文件放binwalk跑一下看看,有没有藏东西

1
binwalk -e f9809647382a42e5bfb64d7d447b4099.pcap 

还真有,再用foremost分离

1
foremost f9809647382a42e5bfb64d7d447b4099.pcap 

查看分离出来的内容,得到flag

Training-Stegano-1

题目已经提示了是图片隐写术,将附件下载下来,用Stegsolve打开

图片太小了,根本看不了,丢进winhex看看

直接就看到flag了 passwd:steganoI

can_has_stdio?

解压出一个文件,属性就是文件

直接用记事本打开看看

嘿嘿,一看就是BrainFuck密码

拿去解密一下

直接就得到flag

解密网站

Erik-Baleog-and-Olaf

还是个无后缀文件,先用记事本打开看看

这次是乱码,不过在结尾发现了png字符,用winhex打开看看

发现有一块地方有点奇怪

再用Stegsolve打开,发现是图片,再分析,找到了个二维码

发现还扫不了哈哈哈,仔细一看是颜色反了,黑色成白色了

于是保存图片下来,找一个图片颜色反转网站,反转图片

在线图片颜色反转

还是扫不了,发现好像缺了一块,在用Stegsolve保存一张比较清晰的其他图片

在丢进Stegsolve变成黑色保存,然后在ppt里面分别选清晰的那部分拼成二维码

扫码得到 flag (用QR扫比较快,手机可能扫不出来)

János-the-Ripper

还是个无后缀文件,先用winhex打开

发现504B是zip文件头,同时也看到flag.txt字符串

于是用foremost分离出zip文件

发现解压需要密码,于是用ARCHPR爆破(选择常用的字典)

爆出密码是fish

于是解压打开flag.txt文件,得到flag

Test-flag-please-ignore

解压得到一个无后缀文件,winhex打开

就一串字符,但看起来好像是16进制,试试16进制转字符串

得到了flag

hong

解压得到mp3文件,来新题型了哈哈哈哈

先听一下,发现文件损坏听不了,放进Audacity也卡不开

于是丢进kali用binwalk看看,是不是音频了藏东西了

1
binwalk -e hong.mp3 

果然有东西,再用foremost分离

得到了2张图片,其中一张就是flag了

misc_pic_again

题目的提示是flag = hctf{[a-zA-Z0-9~]*}

将图片保存下来,用Stegsolve打开看看,暂时没发现什么,但是Red、Green、Blue plane0 3个通道图像都是一样的

猜测可能是lsb隐写,于是试试

果然发现504b这个zip文件头,于是save 以1.zip的形式保存下来,记事本打开里面的文件,发现flag

reverseMe

打开就是一个反的flag

挺好分辨的,干脆就自己亲自识别flag吧

1
flag{4f7548f93c7bef1dc6a0542cf04e796e}

hit-the-core

下载下来一个.core文件,用记事本打开看看

发现一个格式很像flag的字符串

1
cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}

直接提交发现flag不正确,尝试各种密文解密都不行,最后发现前面的大写字母可以连成ALEXCTF,而且都是间隔4个

于是每隔4个取出字符,就得到了flag(累死我了)

1
ALEXCTF{K33P_7H3_g00D_w0rk_up}

glance-50

好奇怪的题目,打开就一条缝(gif动图),哈哈哈哈

先保存下来用Stegsolve打开看看,用里面的帧浏览器看

隐约可以看到字符飘过,不过这也太难看清楚了吧,缝那么小

于是用动态图片分解网站,逐帧分解

动态图片分解网站

哇去,就这样出来了flag

normal_png

打开就一个小黑图片

好神奇,下载到本地打开后,就成了卡通图片

winhex打开没发现什么

Stegsolve、foremost都没发现,就想着会不会是图片高度的问题,尝试修改图片高度,试了几次发现了flag(一开始觉得图片挺完整的,就没往这方面想)59

1
flag{B8B68DD7007B1E406F3DF624440D31E0}

Aesop_secret

下载下来发现是张gif动图,有了上次的经验,直接放到动态图片分解网站分解

得到ISCC或者是15cc,提交发现不是flag,可能是解密的密匙吧

用记事本打开发现一个像是密文的字符串

1
U2FsdGVkX19QwGkcgD0fTjZxgijRzQOGbCWALh4sRDec2w6xsY/ux53Vuj/AMZBDJ87qyZL5kAf1fmAH4Oe13Iu435bfRBuZgHpnRjTBn5+xsDHONiR3t0+Oa8yG/tOKJMNUauedvMyN4v4QKiFunw==

优先考虑那种需要密匙的解密方式,(后面发现是AES解密)

在线AES解密

1
2
U2FsdGVkX18OvTUlZubDnmvk2lSAkb8Jt4Zv6UWpE7Xb43f8uzeFRUKGMo6QaaNFHZriDDV0EQ/qt38Tw73tbQ==
flag{DugUpADiamondADeepDarkMine}

连续解密两次得到flag

CTFSHOW

MISC入门

图片篇(基础操作)

misc1

打开图片就是flag,在线图片文字识别

misc2

解压得到一个txt文件,不难看出里面的 内容是png,修改后缀png,得到flag

misc3

bpg图片,不能直接查看,下载软件bellard来查看

1
.\bpgview.exe misc3.bpg

misc4

下载下来6个txt文件

依此是png、jpg、bmp、gif、tif、riff

依此查看就能拼起来flag了,最后一个riff改成riff后缀不能直接查看,改成png也能正常看

图片篇(信息附加)

大佬总结的png图片解题流程

1.解压zip文件,用winhex打开misc10.png
2.判断文件格式是否篡改,检查png的文件头和文件尾,文件格式正常
PNG文件头(hex):89 50 4e 47 0d 0a 1a 0a
PNG文件尾(hex): 00 00 00 00 49 45 4E 44 AE 42 60 82
3.判断否有文件二进制合并,搜索png文件头8950,发现只有一个,未使用二进制合并文件
4.判断是否修改png图片宽高,使用TweakPNG或者pngcheck等crc校验工具,发现图片宽高正常。
5.用Stegsolve.jar查看图片是否有变换背景色及隐藏色块,发现一切正常
6.用binwalk,执行python -m binwalk -e misc10.png,发现有情况(如果熟悉zlib文件解析,也可自行写python脚本进行解析~)。

7.然后试试zsteg

misc5

用记事本方式打开就能看到flag

misc6

记事本方式打开,ctrl+f搜索

misc7

记事本方式打开,ctrl+f搜索

misc8

1
foremost misc8.png

misc9

记事本方式打开,ctrl+f搜索

misc10

PNG文件头(hex):89 50 4e 47 0d 0a 1a 0a
PNG文件尾(hex): 00 00 00 00 49 45 4E 44 AE 42 60 82

binwalk、foremost、dd隐藏文件分离_formost工具分类_啾啾啾七的博客-CSDN博客

binwalk分离

1
binwalk -e misc10.png

查看分离的文件

misc11

tweakpng打开,发现crc正常,但第一个IDAT竟然比第二个IDAT长度小,可能被修改过了

右键delete掉第一个IDAT

misc12

工具:PNG Debugger 可以进行读取 PNG 图片的数据,检测各数据块中的 CRC 是否正确,在 Windows 下使用。

IDAT有固定的长度,正常的PNG图片只有最后一个IDAT块的长度是比其他的要短的。

使用的话,用 Windows 下的命令行,进入 Debug 文件夹,再执行命令。

1
pngdebugger example.png
1
pngdebugger --verbose example.png

好吧,没发现有IDAT数据crc错误,用tweakpng打开看看,IDAT大小并未是逐块铺满,可能有问题

30个IDAT块,一个一个依此删除,最后发现需要删除前8个

misc13

010editor打开,可以找到4个类似flag的字符(去掉两个字符中间的字符,再连起来就是flag),四个都试一下,发现第三个是正确的

1
2
3
4
5
6
s="631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D"
flag=""
for i in range(0,len(s),4):
x = int(s[i:i+2],16)
flag += chr(x)
print(flag)

但看来wp才知道,这道题想考的应该是文件里一共塞了四个flag,需要判断哪一个是正确的。根据题目提示,“flag位置”在文件末尾,找到文件末尾的IEND块,会发现这个块是14字节而非通常的12字节,也就是说这个块除了4位长度、4位标识和4位CRC,还带了两位数据(通常IEND块是不带数据的,但它也可以带,这应该就是本题知识点)。这两位数据就是正确flag开头那个c字符的字节序号。换句话说其实先找到IEND块里这个序号,然后去找对应的字节,一眼就能看到flag了。强行硬找的话一般会找到第一个,那个是假的;

misc14

binwalk -e可以看到有额外的照片,但是不知道为什么没有分离出来

可以自己在winhex里手动分离,从0x837到结尾导出为jpg文件,打开就是flag

也可以用dd命令

1
dd if=misc14.jpg of=flag.jpg skip=2103 bs=1

misc15

直接记事本打开就行了

misc16

binwalk -e分离一下下

misc17

zsteg可以检测PNG和BMP图片里的隐写数据。

目前,zsteg支持检测:

LSB steganography in PNG & BMP
zlib-compressed data
OpenStego
Camouflage 1.2.1
LSB with The Eratosthenes set

1
zsteg misc17.png

发现额外数据,提取看看

1
zsteg -E "extradata:0" misc17.png > 1.txt

然后binwalk -e 1.txt就可以了

misc18

提示了flag在标题、作者、照相机和镜头型号里。

右键->属性->详细信息就可以了

当然可以用exiftool这个工具

1
exiftool misc18.jpg

windows下使用

1
.\exiftool.exe misc18.jpg

misc19

flag在主机上的文档名里。

1
.\exiftool.exe misc19.tif

misc20

flag在评论里

1
.\exiftool.exe misc20.jpg

乱码,在linux下查看就不会了,懒得再装了,在git bash上使用就不会了

1
2
西替爱抚秀大括号西九七九六四必一诶易西爱抚零六易一弟七九西二一弟弟诶弟五九三易四二大括号
ctfshow{c97964b1aecf06e1d79c21ddad593e42}

misc21

flag在序号里。

1
.\exiftool.exe misc21.jpg

看了wp是说把这四段数字转十六进制拼在一起包上ctfshow{}就是flag

但是序列号不是Serial Number吗

misc22

缩略图隐写,也叫thumbnail隐写

1
.\exiftool.exe -ThumbnailImage -b misc22.jpg > 1.jpg

或者使用工具MagicEXIF打开

1
ctfshow{dbf7d3f84b0125e833dfd3c80820a129}

misc23

flag在时间里。

1
.\exiftool.exe misc23.psd

把四个时间转为时间戳再转hex得到flag

就是把History When : 1997:09:22 02:17:02+08:00, 2055:07:15 12:14:48+08:00, 2038:05:05 16:50:45+08:00, 1984:08:03 18:41:46+08:00转成时间戳再转成16进制

时间戳转换工具

misc41

H4ppy Apr1l F001’s D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。

010editor打开搜索F001

1
ctfshow{fcbd427caf4a52f1147ab44346cd1cdd}

图片篇(文件结构)

misc24

修改一下宽高,直接用PuzzleSlover一键操作FIX-BMP

misc25

依旧是改宽高,png,还是用工具就行了,方便多了,省的用脚本

misc26

爆破完还是可以看清楚flag的

1
2
3
ctfshow{94aef1
+True height(hex) of this picture+
087a7ccf2e28e742efd704c}

0x25e去掉0x

1
ctfshow{94aef125e087a7ccf2e28e742efd704c}

misc27

jpg图片,用010把高度改大一点就好了

misc28

gif修改高度,把所有跟高度有关的都改高点

misc29

每一帧都改一下高度看看,再用Puzzlesolver逐帧分解,发现后面三张有flag

misc30

正确的宽度是950。,已知正确宽度可以爆破出正确的高

直接Puzzlsolver就行了

misc31

一样,高度是正确的,需要爆破出宽度,Puzzlesolver真是神器

这种类型的题目直接用它就行了,直接变成了工具题

misc32

一样已知高度是正确的,求宽度,这次是png类型

还是用工具

misc33

宽高都需要求,无所谓,直接Puzzlesolver

misc34

出题人狗急跳墙,把IHDR块的CRC也改了,但我们知道正确宽度肯定大于900

Puzzlesolver!省去了很多流程

misc35

jpg隐写,先改一下高,改到600可以看见字符了,再用脚本去爆破宽度

1
2
3
4
5
6
7
8
9
10
import struct
filename = "2.jpg"
with open(filename, 'rb') as f:
data = f.read()
for i in range(901,1000):
name = str(i) + ".jpg"
f1 = open(name,"wb")
new = data[:159]+struct.pack('>h',i)+data[161:]
f1.write(new)
f1.close()

998以后可以看到flag

misc36

提示:正确的宽度在920-950之间

老样子,先改高(改到300就行了),再爆破宽

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os
import binascii
import struct
bp = open("4.gif", "rb").read()
#for i in range(901,1500):
for i in range(920,951):
#根据题目给的图片格式修改后缀
image_name=''+str(i)+'.jpg'
image=open(image_name,"wb")
#png
#data=bp[:16] + struct.pack('>i', i)+bp[20:24]+bp[24:]#png
#jpg
#data=bp[:157]+bp[157:159] + struct.pack('>h', i)+bp[161:] #jpg
#gif
data=bp[:38]+ struct.pack('>h', i)[::-1]+bp[40:42] +bp[42:]#gif
image.write(data)
image.close()

941.jpg

misc37

flag在某些帧里面,可以用Puzzlesolver逐帧分解,然后查看图片就行了

1
ctfshow{2056782cd57b13261dcbbe3doeecaa17}

misc38

直接打开是个普通的png图片,但是如果用浏览器打开就会发现图片像gif那样会动

原来这个是apng图片

可以使用APNG Disassembler来把每一帧分离出来,9、17、36、40帧中藏有flag

misc39

gif图,但是所有帧都没有flag信息

结果这里是利用不同帧之间的间隔时间来隐写的(这tm谁想的到)

利用linux下的工具identify

1
2
3
4
5
6
安装命令:sudo apt-get install imagemagick
基本的命令格式:
  identify [options] input-fileidentify:命令名称
  options:参数
  input-file:文件名。
提取命令:identify -format "%T " misc39.gif > 1.txt

得到的一串36和37,考虑把37换成1、36换成0,就得到长度为287的二进制字符串,考虑每7位转一个字符(正常是8位一组),得到flag。

1
2
3
4
5
s="11000111110100110011011100111101000110111111101111111011011010101100100111000011000101100101100110110011001110010111001011010111001101100010011011111000101100101011001001101100111000110010001110010110110011001111000010111001110010111000101100011110000101100000110100011010101110011111101"
flag=""
for i in range(41): #287//7
flag += chr(int(s[7*i:7*(i+1)],2))
print(flag)

misc40

用APNG Disassembler分离apng

看一下txt内容

把229这个当ascii码解码看看

1
2
3
4
5
6
flag=""
for i in range(28,69): #flag内容从28位开始
f = open('apngframe'+str(i)+'.txt')
s = f.read()
flag += chr(int(s.split("/")[0][6:]))
print(flag)

misc42

拿tweakpng打开

将IDAT块的长度转ascii码一下

misc43

题目提示:错误中隐藏着通往正确答案的道路

md拿tweakpng打开,一堆cc报错

将cc报错的 16 进制字符组合在一起,16 进制转字符得到 flag

misc44

题目描述:错误中还隐藏着坑

1
.\PNGDebugger.exe misc44.png >1.txt 

在 debug 文件夹下得到 1.txt 文本

将OK! 换成 1 ,把 FAILED 换成 0 ,组成一串二进制数字,再将那串二进制转字符。
用 python 脚本实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
f=open("./1.txt","r",encoding='UTF-16')
s=f.read()
f.close()
flag=""
for i in s.split():
if "OK!" == i:
flag += "1"
elif "FAILED" ==i:
flag += "0"
print(flag)
print(len(flag))
for i in range(43):
print(chr(int(flag[8*i:8*(i+1)],2)),end="")

misc45

先把图片转化为 bmp ,再进行 binwalk 提取,得到 flag

在线网站:PNG转BMP - 免费在线将PNG文件转换成BMP (cdkm.com)

misc46

题目描述:你见过扶乩吗

考点:用gif 每一帧的偏移量作为坐标来画图

1
identify misc46.gif > 1.txt

再从网上抄个脚本来用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PIL import Image
import matplotlib.pyplot as plt
f = open('1.txt')
pp = []
while 1:
c = f.readline()
if c:
s = eval(c.split('+')[1]+','+c.split('+')[2][:2])
pp.append(s)
print(s)
# print(c)
else:
break
img = Image.new('RGB',(400,70),(255,255,255))
for i in pp:
new = Image.new('RGB',(1,1),(0,0,0))
img.paste(new,i)
plt.imshow(img)
plt.show()

misc47

没见过扶乩,那你知道笔仙吗

给了个有 563 帧不同的图片的png

有 fcTL 块,是帧控制块, 属于 PNG 规范中的辅助块,包含了当前帧的序列号、图像的宽高及水平垂直偏移量,帧播放时长和绘制方式(dispose_op 和 blend_op)等,每一帧都有一个 fcTL 块。

从十六进制中提取出偏移量的坐标,再通过坐标进行绘图。

再偷个脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import struct
from PIL import Image
import matplotlib.pyplot as plt
f = open('misc47.png','rb')
c = f.read()
c = c[c.index(bytes.fromhex('6663544C00000001')):]
pp = []
for i in range(1,1124,2):
start = c.index(bytes.fromhex('6663544C0000')+struct.pack('>h',i))
# start = c.index(bytes.fromhex('6663544C000000'+hex(i)[2:]))
# print(start)
fc = c[start:start+30]
print(fc[18:20],fc[22:24])
print(struct.unpack('>h',fc[18:20])+struct.unpack('>h',fc[22:24]))
pp.append(struct.unpack('>h',fc[18:20])+struct.unpack('>h',fc[22:24]))
# print(fc.index(b'\xb6'),fc.index(b'\x34'))
# print(c[:100])
img = Image.new('RGB',(400,70),(255,255,255))
for i in pp:
new = Image.new('RGB',(1,1),(0,0,0))
img.paste(new,i)
plt.imshow(img)
plt.show()

misc48

附件的第(Di)七(Qi)题(Ti)中有提示。本题略脑洞,可跳过

010打开

可以看到,让我们count FF 然后minus 1

搜索关键字 FF ,可以看到紫色加深位置 FF ,并且有特别多块区域。比如开头的第一块紫色有 1 个 FF ,减去 1 ,得到第一个数字就是 0; 第二块紫色有 13 个 FF ,减去 1 得到数字 12 。依次类推,共统计前 32 块的数量。
最终得到 32 个数字:

1
0 12 11 0 7 10 13 13 9 0 9 13 0 13 6 0 10 9 2 1 0 1 10 8 11 5 12 7 2 2 3 10

转16进制得到

1
0cb07add909d0d60a92101a8b5c7223a

所以

1
ctfshow{0cb07add909d0d60a92101a8b5c7223a}

misc49

它们一来就是十六种。本题略脑洞,可跳过

统计所有 的 FF E0 - FF EF 块,刚好共有 32 个,而 E 后面那一位就是 flag 中的字符,全部组合起来就是 flag :

1
2
0c618671a153f5da3948fdb2a2238e44
ctfshow{0c618671a153f5da3948fdb2a2238e44}

真不会~~~

图片篇(颜色通道)

misc50

有时候视线也要放低一点

stegsolve打开,观察颜色通道

misc51

题目描述:你会数数吗。

puzzlesolve启动,

可以看到,相较于其他颜色,就2和3频次比较特别,将2和3提取出来看看

放大一点就能看到其中的flag

也可以用脚本提取:

1
2
3
4
5
6
7
8
9
10
11
from PIL import Image
im=Image.open('51.png')
im = im.convert('RGB')
img = Image.new("RGB",(900,150))

for h in range(900):
for w in range(150):
s = im.getpixel((h,w))
if s == (64, 96, 128) or s == (128, 96, 64):
img.putpixel([h, w], (255, 255, 255))
img.show()

misc52

题目描述:不会数数没关系,这次可以用眼睛瞪。

选择出现次数最少的十种即可

1
2
3
4
5
6
7
8
9
10
11
from PIL import Image
im=Image.open('misc52.png')
im = im.convert('RGB')
img = Image.new("RGB",(900,150))
lt = [(130, 176, 116),(72, 217, 123),(146, 16, 141),(130, 241, 105),(251, 160, 136),(5, 129, 88),(167, 46, 187),(20, 65, 141),(96, 231, 225),(196, 144, 18)]
for h in range(900):
for w in range(150):
s = im.getpixel((h,w))
if s in lt:
img.putpixel([h, w], (255, 255, 255))
img.show()

misc53

开始愉快的LSB部分。

zsteg直接梭

1
zsteg -a misc53

misc54

通过观察得知,隐写信息是竖向排列的,即按列(column)

misc55

图片反了,stegsolve也没提取出什么

1
2
3
4
5
from PIL import Image

img = Image.open('misc55.png')

img.transpose(Image.FLIP_TOP_BOTTOM).save('out.png')

图片翻转回来,再去提取

R0、G0、B0通道均有隐写痕迹,提取数据

是个压缩包

保存下来解压得到flag


Misc 小计
https://www.supersmallblack.cn/Misc 小计.html
作者
Small Black
发布于
2023年6月13日
许可协议