CTF Misc

金三胖

zip下载后有一张gif,直接拖入到StegSolve中分帧查看,得到flag

1

2

3

4

二维码

下载之后是一个png图片,使用hex fiend打开之后发现里面有一个number.txt文件

5

接着使用foremost分离文件

1
2
3
4
5
6
-> % foremost QR_code.png
foremost: /usr/local/etc/foremost.conf: No such file or directory
Processing: QR_code.png
�foundat=4number.txtn
Qjxu�J����[����OPF4L�
*|

查看输出,里面有一个zip文件,打开里面有一个4number.txt文件,需要一个四位密码。

1
2
3
4
5
6
7
8
9
-> % tree output
output
├── audit.txt
├── png
│   └── 00000000.png
└── zip
└── 00000000.zip

2 directories, 3 files

使用fcrackzip开始破解密码

1
2
3
4
-> % fcrackzip -b -c '1' -l 4 -u 00000000.zip


PASSWORD FOUND!!!!: pw == 7639

你竟然赶我走

zip解压后是一张图片,丢到StegSolve中进行文件格式分析。直接获取到flag

6

大白

zip下载后发现打不开图片,StegSolve打开后发现图片少了一半。

7

对于一个 PNG 文件来说,其文件头总是由位固定的字节来描述的,剩余的部分由 3 个以上的 PNG 的数据块(Chunk)按照特定的顺序组成。具体格式如下

1
2
3
4
5
6
7
8
9
10
11
PNG文件头部格式如下:

- (固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头
- (固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13
- (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)
- (可变)13字节数据块(IHDR)
- 前四个字节代表该图片的宽
- 后四个字节代表该图片的高
- 后五个字节依次为:
Bit depth、ColorType、Compression method、Filter method、Interlace method
- (可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七字节进行crc计算得到。

hex fiend打开图片如下。

8

因此从图片上可以看到crc校验码为0x6D7C7135

尝试对图片的高度进行修复,需要注意的是,文件宽度不能任意修改,需要根据IHDR块的CRC值爆破得到宽度, 否则图片显示错误不能得到flag。

1
2
3
4
5
6
7
8
9
10
11
12
import os
import binascii
import struct


misc = open("dabai.png","rb").read()

for i in range(1024):
data = misc[12:20] + struct.pack('>i',i)+ misc[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x6d7c7135:
print i

得到高度为479,十六进制为0x01df

随后我们在hex fiend中对图片的高度进行修改,修改后打开图片看到flag

9

N种方法解决

下载下来是一个key.exe,拖到hex fiend查看发现是imagebase64格式

10

解码后扫描二维码获取flag

11

乌镇峰会种图

hex fiend打开图片拖到最后面看到flag

12

wireshark

wireshark打开下载到的pcap文件,根据题目提示登录密码即为flag,过滤POST请求获取flag

13

LSB

StegSolve打开图片,在不同通道中切换查看图片,发现blue0,green0,red0和原始图片不一样

14

15

16

17

使用Data Extract功能进行提取,保存成图片,发现是二维码,扫描后获取到flag

18

zip伪加密

下载后发现文件加密,看到题目提示是zip伪加密,因此不需要使用fcrack爆破。首先了解一下zip文件。

一个zip文件由三部分组成

  • 压缩源文件数据区
  • 压缩源文件目录区
  • 压缩源文件目录结束标志

具体组成如下

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
压缩源文件数据区: 
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
00 00:扩展记录长度

压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记(0x02014b50)
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量


压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度

因此我们通过hex fiend打开zip文件可以发现。压缩源文件数据区的全局方式位标记为0900,压缩源文件目录区的全局方式位标记为0900,而对于zip伪加密文件,我们只需要将压缩源文件数据区和压缩源文件目录区的全局方式位标记从0900或者0100修改为0000就可以移除密码,反之则可以添加密码。

19

被嗅探的流量

wireshark打开过滤post请求,发现有一个jepg格式的照片,打开查看。

20

获取到flag

21

镜子里面的世界

StegSolve打开图片,在不同通道中切换查看图片,发现blue0,green0,red0和原始图片不一样

data extract获取flag

22

ningen

binwalk分析

1
2
3
4
5
6
7
-> % binwalk 9e3ec8c2-38c7-41cf-b5d7-abe7872de4c3.jpg

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JPEG image data, JFIF standard 1.01
38689 0x9721 Zip archive data, encrypted at least v2.0 to extract, compressed size: 50, uncompressed size: 38, name: ningen.txt
38871 0x97D7 End of Zip archive, footer length: 22

发现存在zip文件。foremost分离

1
2
3
4
5
-> % foremost 9e3ec8c2-38c7-41cf-b5d7-abe7872de4c3.jpg
foremost: /usr/local/etc/foremost.conf: No such file or directory
Processing: 9e3ec8c2-38c7-41cf-b5d7-abe7872de4c3.jpg
|foundat=ningen.txt|���B��W��u���:)�ם[Rk�3�_��W�i�}Ćne%�3�]��BPK?
*|

zip下有一个ningen.txt文件,但是被加密了,由题目可知是四位数密码,fcrack爆破获取flag

1
2
-> % fcrackzip -b -c '1' -l 4 -u output/zip/00000075.zip
PASSWORD FOUND!!!!: pw == 8368

easycap

追踪tcp数据流获取flag

23

FLAG

图片下载下来binwalk查看发现存在压缩文件

1
2
3
4
5
6
-> % binwalk 42011487927629132.png

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 664 x 586, 8-bit/color RGB, non-interlaced
41 0x29 Zlib compressed data, default compression

stegsolve最低位分析,根据标识头发现是zip文件

24

修改下载下来的图片后缀为zip并解压,发现里面存在一个1的文件,查看文件属性发现是可执行文件

1
2
-> % file 1
1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=8df45089fa39fec83423ec37a944e81065d16bee, not stripped

Ghidra打开反编译后看到flag

25

数据包中的线索

下载图片后追踪http流,发现有一串base64编码数据,以/9j/开头,属于图片格式,直接base64转图片,看到flag

26

27

来首歌吧

Audacity打开发现存在摩斯电码,解密得到flag

28

snake

下载图片后binwalk分析

1
2
3
4
5
6
7
8
9
10
-> % binwalk snake.jpg

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JPEG image data, JFIF standard 1.01
30 0x1E TIFF image data, big-endian, offset of first image directory: 8
2925 0xB6D Copyright string: "Copyright Apple Inc., 2015"
278260 0x43EF4 Zip archive data, at least v1.0 to extract, compressed size: 82, uncompressed size: 82, name: key
278375 0x43F67 Zip archive data, at least v1.0 to extract, compressed size: 48, uncompressed size: 48, name: cipher
278632 0x44068 End of Zip archive, footer length: 22

修改后缀后解压

发现有俩文件一个cipher一个key,将keyhex fiend打开发现一串base64

1
V2hhdCBpcyBOaWNraSBNaW5haidzIGZhdm9yaXRlIHNvbmcgdGhhdCByZWZlcnMgdG8gc25ha2VzPwo=

解码结果为

1
What is Nicki Minaj's favorite song that refers to snakes?

google搜索这个人和蛇有关的歌曲,名为anaconda

29

加密算法是什么呢?百思不得其解,网上查了后发现蛇还有个英文名叫Serpent正好也对应一个加密算法。。。

serpent在线加解密:http://serpent.online-domain-tools.com/

得到flag

30

佛系青年

下载后发现zip是伪加密,直接修改后打开,里面一张照片一个文件,文件内容如下

31

没看明白啥意思,图片我binwalk hexfiend stegsolve都无果

看了writeup后知道了一个网站。。。。

与佛论禅:https://www.keyfc.net/bbs/tools/tudoucode.aspx

得到flag

32

菜刀666

下载文件后直接wireshark打开,根据题目应该是POST请求,直接过滤post请求

33

过滤之后追踪http请求流,发现了两段可以的请求

第一段post参数有z1z2

34

z1 base64解码得到一个图片地址

36

z2是很长的一段16进制hex码,以FFD8开头以FFD9结尾,可以判断出是jpeg图片格式的开头和结尾,于是找一个在线网站直接转换

hexadecimal->image:https://codepen.io/abdhass/full/jdRNdj

37

第二段post请求中存在其他文件

35

foremost分离

1
2
3
4
5
6
-> % foremost 666666.pcapng
foremost: /usr/local/etc/foremost.conf: No such file or directory
Processing: 666666.pcapng
|foundat=flag.txtC����cS�J��Ea�v�
��&e$K��2%�$��,�=�J��1p��p46PK?
*|

输入上面图片中的密码,拿到flag

鸡你太美

两张gif图,第二张副本图片损毁了,hex fiend打开后发现缺少gif头,标识为47 49 46 38,添加gif头后可以正常打开,看到flag