# WEEK5

# 隐秘的图片

解压附件,得到 key1,key2 两张图片

key1 扫出来并不是 flag

大致看了下,发现 key2 很奇怪,并不像拼接定位点,而黑白两部分并不需要 xor

两张图片的大小是相同的,所以猜测一下使用 stegsolve 进行合并

xor 得到完整二维码。扫码得到 flag

flag{x0r_1m4ge_w1ll_g0t_fl4ggg_3394e4ecbb53}

# ezhard

是一道磁盘取证题,这题我没用别的工具就单用了 winhex

发现 lost+found 处有 flag 和 hint.png,于是用 binwalk 对文件进行分离

能直接在 hint.png 获得 flag

flag{12bc2ba3-fa54-7b45-7f3d-f54ea6e45d7c}

# 新建 Python 文件

当时第一次看题的时候第一反应就是反编译,结果没有什么发现,就是一个普通的脚本

这题的考点在于剑龙隐写(stegosaurus),也是比较老的一个考点了

https://github.com/AngelKitty/stegosaurus

这题对 python 的版本好像有一定的要求,需要 3.6 的环境,本机是 3.1 的所以当时跑了下直接报错也就没再返回看了

跑一下就能出

flag{s0_b4By_pYcst3g}

# BabyAntSword

看题目就知道是蚁剑的流量题

无非就是解密请求包与回显包,先看看流量

在第 31 流开始明显出现了蚁剑 webshell 的流量特征

在第 36 流出现了命令执行语句,并且多出了第二个字段,参数为 n3wst4r

这便是 webshell 的密码

而执行的命令解码便知道是 whoami

第 39 流的回显明显较多,去除头尾解码查看

在这里找到了 java 的版本

在解码 43 流回包时发现了一个 uuid,猜测为需要寻找的最后一个信息,去查看下请求包

发现文件名称为 secret,再查看下下个流的请求包

发现把该文件删除了,确定了这便是需要寻找的内容,拼接得到 flag

flag{n3wst4r_7u121_c5850a0c-dc03-1db2-4303-43d6fdf27985}

# Easymem

是一道平时比较常见知识点的内存取证题,这里用到工具 vol2,PasswareKitForensic 和 gimp

先用 imageinfo 查看类型

1
.\volatility_2.6_win64_standalone.exe -f 3.raw imageinfo

再查找名称带有 flag 字段的文件

1
.\volatility_2.6_win64_standalone.exe -f 3.raw --profile=Win7SP1x64 filescan | findstr flag

发现桌面上有个 flag2.txt,给它 dump 下来得到第二段 flag

1
.\volatility_2.6_win64_standalone.exe -f 3.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007ed627e0 -D ./

83-5032-1056-

接着使用 PasswareKitForensic 去爆破用户密码

可以得到 ctf 用户的密码为第一段 flag,flag {45a527fb-2f

接着还剩最后一段 flag,根据前面几周的经验,notepad 和 editbox 都查看了,发现没有东西,去看看画板的进程

1
.\volatility_2.6_win64_standalone.exe -f 3.raw --profile=Win7SP1x64 pslist | findstr mspaint

先找到画板的进程号

1
.\volatility_2.6_win64_standalone.exe -f 3.raw --profile=Win7SP1x64 memdump -p 1484 --dump-dir=./

接着使用 memdump,dump 它内存进程的转储文件,得到 1484.dmp,改后缀为 data 拖入 gimp 固定好常用宽高拉取位移使图像清晰可见

得到最后一段 flag,这里可以切换高度和宽度重新位移试试,我这里的数据得到的就是镜像图片,在线网站翻转一下就能看了

拼接得到完整 flag

flag{45a527fb-2f83-5032-1056-0b949b63a947}

# Enigma

1
pip3 install py-enigma

这题没做出来,附上官方脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from enigma.machine import EnigmaMachine
reflectors = ['B-Thin', 'C-Thin']
rotors = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII']
for r1, r2, r3 in [(r1, r2, r3) for r1 in rotors for r2 in rotors for r3 in rotors]:
for r in reflectors:
for a, b in [(a, b) for a in range(1, 26) for b in range(1, 26)]:
machine = EnigmaMachine.from_key_sheet(
rotors=' '.join([r1, r2, r3]),
reflector=r,
ring_settings=[a, 15, b],
plugboard_settings=''
)
temp = machine.process_text('uwdhwalkbuzwewhcaaepxnqsvfvkohskkspolrnswdfcbnn')
if temp.startswith("FLAG"):
print(temp, r1, r2, r3, r)
break

去了解了一下 enigma 是二战时期的德国密码机,其实只要知道本题中有几个未知的加密参数:reflector、rotors 和 rs1、rs2,去根据他们原有的范围编写脚本爆破密文即可
得到:

flag{ENIGMAISSOOOINTERESTINGCRYPTODOYOUTHINKSO}