flag11
视频里,底下一串 ++++[>
的东西就是 flag11,这一串是 Brainfuck 语言,是一种非常接近图灵机的编程语言。可以直接使用在线工具转换即可:https://www.splitbrain.org/services/ook ,正确答案是 flag11{63418de7}
。
++++++++++[>++++++++++>++++++++++>+++++>++++++++++++<<<<-]>++.++++++.>---.<-----.>>-..>+++.<+++++.---.+.---.+++++++.<+++.+.>-.>++.
flag12
仔细观察视频你会发现,开头的背景是灰色的,在第20秒左右,颜色就加深了,其实开始的背景图是有猫腻的,用到了图片盲水印技术,flag12 就藏在背景图片里,原理就是使用傅里叶变换把原图变为频谱图,再叠加水印,将含水印的频谱图进行傅里叶逆变换得到含水印的图像。蚁景网络安全的这篇文章有详细的介绍:https://blog.csdn.net/YJ_12340/article/details/127087949 ,我们直接使用文中的方法,使用 Python 处理图片后即可得到 flag12{3ac97e24}
。
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取为灰度图像,52pj.png 为视频开头的背景截图
img = cv2.imread('52pj.png', 0)
f = np.fft.fft2(img)
# 将图像中的低频部分移动到图像的中心
fshift = np.fft.fftshift(f)
# 取绝对值:将复数变化成实数,目的为了将数据变化到较小的范围(比如0-255)
s1 = np.log(np.abs(f))
s2 = np.log(np.abs(fshift))
plt.subplot(121), plt.imshow(s1, 'gray'), plt.title('original')
plt.subplot(122), plt.imshow(s2, 'gray'), plt.title('center')
plt.show()
下图可能平台会有压缩看不清,自己照着处理一下即可。
flagC
flagC 是动态的,还得回到 https://2023challenge.52pojie.cn/
这个网站上来。
点击登陆后,来到 login
页面,让我们提交 UID,但是这个输入框无法输入,修改一下源码,将 disabled
删除即可。
然后输入我们的 UID,提示您不是 admin,你没有权限获取 flag。
抓包分析一下,发现在点击提交后,Response Headers
有个 Set-Cookie
,而这个 cookie 由三段组成,以 .
分隔,很明显是一个 JWT(JSON Web Token)。
JWT 是可以解密的,来到 jwt.io
这个网站,解密后可以发现 payload 部分包含了我们的 uid 和 role 角色信息,此刻我们是普通的 user,直接将其改为 admin 即可,将生成的新 JWT 拿来重新提交,即可拿到正确的 flagC。