2024RCTFwp sec-image

2024RCTFwp sec-image

M1aoo0bin

。:.゚ヽ(*´∀`)ノ゚.:。

sec-image

information: real sec ??

write up

下了文件解包之后应该映入眼帘的是flag0.png~flag9.png这样十张图

来看第一张图:

其实我没太看出来((,但是大伙都说肉眼可看是RCTF
ok,可看==可打
很明显他是四个字母叠在一起
放大看看,我首先去看了字母T中间那一竖的地方:

以普遍理性而言,一个小白格子对于一个字母应该是只有单一的信息
所以只应该关注重复的小黑点,那些大大小小的就看作是噪声,可以看到对字母T的特征就是一种整体往左下偏移的网点阵
猜想别的字母也是网点阵
可以再看一个比较复杂的区域

很明显都是一些有规律的图形,每个重复的单元都可以用2*2的大小表示,就像铺地砖一样铺出来,
这里就基本证实我们的猜想,这张图是把不同偏移的网点图叠加在一起:
简单分析一下得到这张图的偏移是:

R C
T F

ok,那就很简单了如果我们把这张图表示这个字母的地方截取出来再拼接,就能看到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
import cv2


def split4db(img, offset_x=4, offset_y=4, flag=0):
# 跳过外围黑边
img = img[offset_y:, offset_x:]
x = 0
y = 0
p = 0
if flag == 1:
pass
elif flag == 2:
x += 1
elif flag == 3:
y += 1
else:
x += 1
y += 1
# 先切x
for i in range(40):
for _ in range(6):
img1 = img[:, :x]
img2 = img[:, x + 1:]
img = cv2.hconcat([img1, img2])
x += 1
if i == 39:
break
p += 6
img1 = img[:, :p]
img2 = img[:, p + 8:]
img = cv2.hconcat([img1, img2])
# 再切y
p = 0
for i in range(40):
for j in range(7):
img1 = img[:y, :]
img2 = img[y + 1:, :]
img = cv2.vconcat([img1, img2])
y += 1
if i == 39:
break
p += 7
img1 = img[: p, :]
img2 = img[p + 6:, :]
img = cv2.vconcat([img1, img2])

return img


for i in range(10):
filename = f"flag{i}.png"
img0 = cv2.imread(filename)
for j in range(4):
img = split4db(img=img0, flag=(j + 1))
savename = f"rctf{(i + 1) * 4 - j}.png"
cv2.imwrite(savename, img)

结果:

后记

为了维持干净的wp,把一些思路还是放在后面
所以在这个答案之前,我也有过这样的想法:

去根据灰度标记每个白色小方格标志为[0,1,2,3,4]
中一个,来表示这个块有几个字母,因为每个图其实都有一个能看出来的字母,然后把这个字母所在方格的标志减掉一,然后反向操作,从标志到灰度,再看看有什么能看出来的字符。

当然,这个思路弊端很明显:

  • 没有位置信息
  • 把看的出结果的方格减一很难做得很准确,尤其是在文字边缘
  • 更有可能出现把已知得字符减去之后,找不到新的字符的情况

所以放弃这个思路,更仔细的去看每一块的内容,或许cv的题真的可以从出题的角度去看题,从这个题是怎么构成出出来的考虑。
于是就想到要去看看具体每一块的内容。

完结撒花★,°:.☆( ̄▽ ̄)/$:.°★
题的脚本不是很难构造,想到就是想到,很misc的一道题

  • Title: 2024RCTFwp sec-image
  • Author: M1aoo0bin
  • Created at : 2024-05-28 16:43:37
  • Updated at : 2024-09-03 21:04:24
  • Link: https://redefine.ohevan.com/2024/05/28/RCTF2024-wp-sec-image/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
2024RCTFwp sec-image