本篇由CTF show新手必刷菜狗杯平台和各个师傅的提供

为了方便阅读,文章会尽量将每一步操作、每一个知识点都解释清楚

如果已经有一定基础,也可以将本文作为一次简单的复盘参考

有什么问题和建议可以私聊我,感谢各位读者

杂项签到

杂项签到

杂项题

拿到附件解压.png格式,优先考虑图片隐写

打开010或winhex工具查看十六进制,调整宽高调试并没有找到falg

杂项题

直接搜索ctf或者flag试试看,直接搜出来了

杂项题

flag:ctfshow{a62b0b55682d81f7f652b26147c49040}

损坏的压缩包

损坏的压缩包

杂项题

拿到附件解压解压错误,不是个zip的包

打开010或winhex工具查看十六进制,看到头是png,把文件后缀改成.png格式

杂项题

flag:ctfshow{e19efe2eb86f10ccd7ca362110903c05}

谜之栅栏

谜之栅栏

杂项题

附件给了两张图片,直接打开010工具是用工具的比较文件

把两张png导入进去进行对比

杂项题

杂项题

可以看到两张图片给了flag,根据题目栅栏提示可以想到栅栏解码

杂项题

杂项题

复制两段cfhwfaab2cb4af5a5820}Ltso{06071f997b5bdd1a

交给解码工具分为2栏会得到flag

flag:ctfshow{f0a6a0b721cfb949a7fb55ab5d8d210a}

你会数数吗

你会数数吗

杂项题

附件没有后缀名,先拖进010工具伺候

杂项题

可以看到一堆乱码

根据题目提示可能是词频统计

在工具里找到直方图

杂项题

杂项题

计数从大到小排列就可以看到flag个了。

杂项题

flag:ctfshow{a1b2d3e4g56i7j8k9l0}

你会异或吗

你会异或吗

下载附件之后文件.png格式文件是损坏的,直接拖进010工具

杂项题

里面是一堆乱码什么都搜索不到根据题目提示:你会异或吗 神秘数字:0x50

使用工具 十六进制运算二进制异或

杂项题

杂项题

给了png的图片ctrl+s保存

杂项题

拿到flag

杂项题

flag:ctfshow{030d0f5073ab4681d30866d1fdf10ab1}

flag一分为二

flag一分为二

杂项题

拿到附件解压后是一张图片,还是拖进010工具

宽高给小了,可以给大一点,保存

杂项题

杂项题

有信息SecondP@rTMikumiku~},但并不是最终的flag

看提示应该不是一般的图片隐写,这里引入了一个盲水印

使用工具:WaterMar

杂项题

将图片放到工具里面,提取出来得到信息ctfshow{FirstP@RT

杂项题

将两张的信息结合就是最终的flag

ctfshow{FirstP@RTSecondP@rTMikumiku~}

我是谁??

我是谁??

进到给的地址里, 这道题的本质:疯狂的“看剪影猜动漫人物”

杂项题

杂项题

这个关卡其实是一个小游戏:

服务器会给你一段视频,里面有一个动漫角色的黑色剪影

同时有一张包含了所有角色的合集大图,排列成类似排座位一样的格子(A0, A1, … J9)

游戏要求:必须连续猜对 30 次以上这个剪影是哪个格子里的角色,服务器才会把 Flag 吐给你。如果靠肉眼看,会很难,而且错一次就会重置。所以用脚本自动去“比对”两张图

官方脚本

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import requests
from lxml import html
import cv2
import numpy as np
import json


url="http://xxxxxxxxxxxxxxxxxxxx.challenge.ctf.show"

sess=requests.session()

all_girl=sess.get(url+'/static/all_girl.png').content

with open('all_girl.png','wb')as f:
f.write(all_girl)

big_pic=cv2.imdecode(np.fromfile('all_girl.png', dtype=np.uint8), cv2.IMREAD_UNCHANGED)
big_pic=big_pic[50:,50:,:]
image_alpha = big_pic[:, :, 3]
mask_img=np.zeros((big_pic.shape[0],big_pic.shape[1]), np.uint8)
mask_img[np.where(image_alpha == 0)] = 255

cv2.imwrite('big.png',mask_img)



def answer_one(sess):
#获取视频文件
response=sess.get(url+'/check')
if 'ctfshow{' in response.text:
print(response.text)
exit(0)
tree=html.fromstring(response.text)
element=tree.xpath('//source[@id="vsource"]')
video_path=element[0].get('src')
video_bin=sess.get(url+video_path).content
with open('Question.mp4','wb')as f:
f.write(video_bin)
#获取有效帧
video = cv2.VideoCapture('Question.mp4')
frame=0
while frame<=55:
res, image = video.read()
frame+=1
#cv2.imwrite('temp.png',image)
video.release()
#获取剪影
image=image[100:400,250:500]
gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#cv2.imwrite('gray_image.png',gray_image)
temp = np.zeros((300, 250), np.uint8)
temp[np.where(gray_image>=128)]=255
#去白边
temp = temp[[not np.all(temp[i] == 255) for i in range(temp.shape[0])], :]
temp = temp[:, [not np.all(temp[:, i] == 255) for i in range(temp.shape[1])]]
#缩放至合适大小,肉眼大致判断是1.2倍,不一定准
temp = cv2.resize(temp,None,fx=1.2,fy=1.2)
#查找位置
res =cv2.matchTemplate( mask_img,temp,cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
x,y=int(max_loc[0]/192),int(max_loc[1]/288)#为什么是192和288,因为大图去掉标题栏就是1920*2880
guess='ABCDEFGHIJ'[y]+'0123456789'[x]
print(f'guess:{guess}')
#传答案
response=sess.get(url+'/submit?guess='+guess)
r=json.loads(response.text)
if r['result']:
print('guess right!')
return True
else:
print('guess wrong!')
return False

i=1

while i<=31:
print(f'Round:{i}')
if answer_one(sess):
i+=1
else:
i=1

把地址改掉,跑一遍就会拿到随机flag

You and me

You and me

杂项题

附件还是两张不同的,先拖进010对比,但并没有用的信息

这道题还是盲水印

实用工具:BlindWaterMark-master

将两张图片放到工具里,cmd打开终端

输入:

python bwmforpy3.py decode you.png you_and_me.png flag.png

杂项题

这是执行完会在工具里给出flag.png

杂项题

flag:ctfshow{CDEASEFFR8846}

7.1.05

7.1.05

7.1.05wp

7.1.05wp

下载附件解压安装包,是.SAV的后缀,百度了一下**.sav 文件是一种二进制数据文件,常用于 SPSS 统计软件保存数据,也可作为游戏存档文件保存游戏进度**

7.1.05wp

这里我在kali用strings工具查看一下有效信息,第一行给了C盘的路径,和几个网址。

7.1.05wp

进来之后是一个游戏网址,那这个文件基本就是个游戏存档。

大题目就是版本号,现在已经更新到了12.0的版本,题目7.1.05

根据提示,数字就是qq群,拿游戏安装包的群,百度不好找这个版本。

7.1.05wp

7.1.05wp

这是游戏包和解压后的,打开CapStart.exe游戏。

7.1.05wp

7.1.05wp

这里会有一个问题,那就是游戏本身是没有存档的,现在只是下载7.1.05这个版本的游戏包

先根据题目提示无MOD + 全DLC,我的理解是关闭MOD开关,打开全部的DLC开关

附件给的.SAV文件就是游戏存档,还记得用strings工具给的C盘路径信息嘛

把.SAV文件放到C:\Users\Administrator\Documents\My Games\Capitalism Lab\SAVE\

并再次打开游戏,点击载入游戏就进去了

7.1.05wp

7.1.05wp

进来之后也是非常的懵,后面了解了是看这片的研发中心 点击进去

7.1.05wp

7.1.05wp

可以看到我标注的地方,从第一个研发中心开始一直到最后一个,里面的研发数量都是不一样的

把所有的数字全部罗列出来可以得到这么一串数字:9794598612147726669494087179782678475623253058262173164497949649813569030779924086502049160804

7.1.05wp

这里可以看到是需要用到一个函数

7.1.05wp

7.1.05wp

在python里运行出来乱码,这里了解了一下,是数字倒过来在运行一次

可以利用在线工具或者代码将数字倒叙

7.1.05wp

7.1.05wp

倒叙之后在运行一次,可以看到出来了,但并不是最终的,还需要在倒叙一次

7.1.05wp

flag:ctfshow{Cap1tal1sm_Lab_1s_S0_G00d_Gam3}

黑丝白丝还有什么丝?

黑丝白丝还有什么丝?

进入给的连接直接跳转抖音,行。也是给解题师傅的福利。

杂项题

视频两分多钟,数黑丝和白丝出场

白丝为 . 黑丝为 - 转场为

看视频手敲:.-- ....- -. - - ----- -... ...-- -- --- .-. . -.-. ..- - .

用本地或在线工具解摩斯密码

flag:ctfshow{w4ntt0b3morecute}

我吐了你随意

我吐了你随意

杂项题

拿到附件进来文本看到之后感觉诚意满满,但是flag你倒是给我放好了啊

提示给了零宽隐写,要用一个零宽度字符的Unicode隐写术

工具网址:http://330k.github.io/misc_tools/unicode_steganography.html

杂项题

根据顺序放进去解码可得到falg

flag:ctfshow{OP_is_for_Over_Power}

讯疾响应

讯疾响应

杂项题

附件是一张二维码,用了普通的QR工具扫不出

这里用到了QRazyBox工具

杂项题

杂项题

放入二维码,提取二维码信息

杂项题

可以看到一半的flag,ctfshow{11451419-1981-

返回

需要使用画笔将纠错区给涂白,然后使用工具按刚刚的步骤在扫描一遍

杂项题

杂项题

杂项题

杂项题

可以看到我标注的地方,修复之后,可以拿到另一半landexiangle}

可以得到

flag:ctfshow{11451419-1981-landexiangle}

打不开的图片

打不开的图片

杂项题

附件的png是损坏的,直接打开010工具

可以看到文件头是77 B0 B2 B9

0x77 + 0x89 = 0x100 这个运算就是求补(Negate)

010软件的按钮: 只是由于翻译或其他问题,都归“求反”

杂项题

杂项题

使用十六进制求反工具,就会修复原本的png头

杂项题

保存退出就会得到flag图

杂项题

flag:ctfshow{84a3ca656e6d01e25bcb7e5f415491fa}