2023年SWPU NSS 秋季招新赛 (校外赛道) MISC复盘WP
GIF Code
题目描述:
扫一扫即可获取Flag
给了一个含二维码的动图,分离一下得到九张二维码碎片,根据文件名数字按顺序组装,在线扫码即可
NSSCTF{3f0ac91b-3e0e-a7e2-7b2a-c67cfdc093fe}
相信他终将回来
题目描述:
我们的湾湾
hint1:base怎么就不能转成16进制呢
010查看,base64转图片
但是打不开,因为宽高有问题,修改下宽高
NSSCTF{Taiwan_will_eventually_return}
签到base你值得拥有
题目描述:
打不开?有听misc培训吗o.0
hint1:也许你可以32与64轮换着来
文件过大,但是我们熟悉的类型,base64,32反复解
exp:
f = open('code.txt').read()
import base64
while 1:
try:
f = base64.b32decode(f)
print(f.decode()[:100])
except:
try:
f = base64.b64decode(f)
print(f.decode()[:100])
except:
print(f[:100])
break
#NSSCTF{oi_you_konw_32and64!}
WD Code
题目描述:
最新最热的WD Code,怎么扫?
第一次见这种码,分析一段时间后发现是极坐标,需要转化成直角坐标
exp:
import cv2
img = cv2.imread('WD Code.png')
img = cv2.resize(img, (img.shape[1], img.shape[1]))
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
d = img.shape[0]
flat = cv2.warpPolar(img, (d, d), (d//2, d//2), d//2, cv2.WARP_POLAR_LINEAR)
cv2.imshow('', flat)
cv2.waitKey()
出来后扫就完事了
还有一种做法。。。。用PS
选择滤镜——扭曲——极坐标——极坐标到直角坐标
直接扫即可
NSSCTF{1a8bb32f-7af8-b994-c5a6-9fa04b3e188c}
为何不避?
题目描述:
想要我的flag吗,想要的话可以全部给你,去找吧,我把我的flag放在门酱那儿了。
hint1:除了binwalk还有啥可以用呢?
kali分离出来一个RAR压缩包一个图片,但是RAR是坏的需要修复,直接可以用WINRAR修即可。
然后得到flag.txt
NSSCTF{y1n_w3i_6u_p@@@}
谁发的图片打不开啊
题目描述:
你这是什么表情
一张损坏的图片,但文件名有东西,提取出来解码
得到信息,看着像密码,根据题目描述“什么表情”想到base100,把文件放到cyber看一下:
得到表情,然后按上面密码解码就行
NSSCTF{you_kn0w_this_emoji}
咱们玩个游戏吧
题目描述:
七巧板玩过,八巧板玩过吗
给了八张二维码碎片图片,一样是拼接,两个一组,扫码得到
%4e%53%53%43%54%46%7b%6d%6f%75%6e%74%61%69%6e%73%5f%61%6e%64%5f%73%65%61%73%5f%66%6f%72%5f%79%6f%75%7d
0和1还能做什么
题目描述:
1344*840
hint1:0为黑1为白,根据描述的1344*840转换成生活中黑白并存的东西
文件给出好多01,根据提示想到按坐标画二维码
exp
from PIL import Image
MAX1 = 1344
MAX2=840
pic = Image.new("RGB",(MAX1, MAX2))
str = "这里把数据放进来"
i = 0
for y in range (0,MAX2):
for x in range (0,MAX1):
if(str[i] == '1'):
pic.putpixel([x,y],(0, 0, 0))
else:
pic.putpixel([x,y],(255,255,255))
i = i+1
pic.show()
pic.save("flag.png")
NSSCTF{you_seem_to_same_as_always}
Welcome to osu!
题目描述:
出题人私货时间!请注意查看附件的题目描述.pdf哦!
hint1:或者,了解一下.osu文件?https://osu.ppy.sh/wiki/zh/Client/File_formats/osu_(file_format)hint2:坐标绘制
根据附件pdf提示,要么玩游戏获取flag,要么找到flag。。。。
对手残党来说,还是找吧,手速慢的玩不了一点。。
法一:
如果是玩过osu!并且还编过谱,可能会猜到是Slider Art,其实直接打开编辑器,拖到最后一个物件,点一下,就看到flag了。
没错!就是这么简单!!!很神奇对吧!明明这个滑条这么多点,但是他就是不走,为什么呢?注意看文档的这个地方:
是的,滑条长度是参数,不是画了哪些点,滑条就一定要走完所有的点,如果长度不够,滑条是根本不会继续往下走的。
法二:
就算没有玩过osu!,再加上后面给的提示,分析一下.osu文件,你会发现有个坐标这种参数,以及在.osu文件,最后一大堆数据,很容易也可以产生联想
这一堆东西其实就是坐标点,简单写个脚本把这些点画出来,就能看到了。
import matplotlib.pyplot as plt
data_str = "280:128|-39:285|-39:285|-31:285|-31:285|-35:285|-35:285|-35:281|-35:281|-35:277|-35:277|-35:273|-35:273|-35:269|-35:269"
# 这里只列出了部分数据,为了不刷屏,剩下的就自己复制罢
# 解析数据
points = [tuple(map(int, pair.split(':'))) for pair in data_str.split('|')]
x, y = zip(*points)
plt.figure(figsize=(10, 6))
plt.scatter(x, y, color='blue', marker='o')
plt.grid(True)
plt.tight_layout()
# 反转Y轴
plt.gca().invert_yaxis()
plt.show()
升天
题目描述:
魔法邮票嗑大了以至于我能看见她在唱什么
hint1:右声道存在SSTV
提示右声道 有SSTV,直接用AU分离音轨
然后RX-SSTV解码,得到压缩包密码:
+--!suki!--+
解压发现里面是一个INTERNET.txt
和压缩包 INTERNET.zip
,压缩包里面每层都有一堆特殊名字的txt和INTERNET.zip。
而其中txt里面只有一个字符,而且每层的txt不太一样。
经检查发现层数刚好和txt行数一样,而且INTERNET.txt里面内容是压缩包里面的文件名,根据文件名找每层对应的txt文本里的内容,最后可以拼接出一段话。
因此逐层解压,然后每层读一个对应的txt
exp:
import os
order = [i.strip()+'.txt' for i in open('INTERNET.txt','r',encoding='utf8').readlines()]
flag = ""
for i,v in enumerate(order):
os.system('unzip -oq -O UTF8 INTERNET.zip')
flag += open(order[i],'r').read()
print(flag)
Welcome to SWPU NSS team and congrats on capturing the flag! This feat showcases your skills and determination. The flag is: NSSCTF{1NT3RNE7_1001010011100110ST} Remember, scripting is crucial. It automates tasks and enhances problem-solving. Embrace its power and continue to excel!
flag
NSSCTF{1NT3RNE7_1001010011100110ST}