霍雅
NSSCTF [青海民族大学 2025 新生赛] wp(没有pwn)
1.签到题
ZmxhZ3tIZWxsb18yMDI1KQ==
base64解码flag{Hello_2025)
flag替换成NSSCTF,右边括号改成},应该是出题人错误
2.失落遗迹的神秘预言
在遥远的奇幻世界中,一座失落的遗迹被重新发现。遗迹的墙壁上刻满了神秘的符文,这些符文似乎是由古老的魔法师**维吉尼**雕刻出,并用**栅栏**围起来保护的艺术品。传说,只有真正的**HERO**才能解开这些符文的秘密,找到通往遗迹深处的钥匙。
me{05ha_A_2}px22_vbGW13@
题目提到维吉尼和栅栏,可以联想到维吉尼亚加密和栅栏加密。密码为HERO
hhttps://ctf.bugku.com/tool/vigenere
得到fa{05qm_T_2}lg22_huCF13@
随波逐流栅栏一把梭
得到flag{2025_qhmu_CTF_123}@,结尾@应该是出题人错误,删除改前缀即可
3.wenshilou
一个图片,里面有个zip,foremost文件提取
解压得到flag.txt 里面是一个base64
flag{welcometoQinhaiminzudaxue}
4.新年快乐
在一个神秘的代码世界里,隐藏着一个代表好运的信息。这个信息被一种特殊的替换加密方式保护了起来。我们知道,在这个加密规则里,英文字母和数字都遵循特定的替换规律,而像 { 和 } 这样的特殊字符则保持不变。
下面给你一些已知的加密对应关系作为提示:
字母 a 加密后变成 z,b 变成 y,c 变成 x,依次类推,呈现一种对称的替换模式,就像字母表从两端向中间靠拢一样。
数字 0 加密后变成 9,1 变成 8,2 变成 7,同样是对称的替换,仿佛数字在镜子里的倒影。
现在,你截获了一段加密后的信息:Gsv_Bvzi_lu_gsv_Hmzpv_rh_zfhkrxrlfh,请运用这些提示,解开这个神秘的信息,找到那个代表好运的 flag!
Atbash Cipher(阿特巴什密码)
写脚本或者找工具,我是直接丢给ai让他做
这种加密方式是 Atbash Cipher(阿特巴什密码),它是一种简单的替换密码,对字母表进行对称翻转(A ↔ Z, B ↔ Y, C ↔ X, ...)。对于数字,同样是对称翻转(0 ↔ 9, 1 ↔ 8, 2 ↔ 7, ...)。
解密 Gsv_Bvzi_lu_gsv_Hmzpv_rh_zfhkrxrlfh :
G ↔ T, s ↔ h, v ↔ e → The
B ↔ Y, v ↔ e, z ↔ a, i ↔ r → Year
l ↔ o, u ↔ f → of
g ↔ t, s ↔ h, v ↔ e → the
H ↔ S, m ↔ n, z ↔ a, p ↔ k, v ↔ e → Snake
r ↔ i, h ↔ s → is
z ↔ a, f ↔ u, h ↔ s, k ↔ p, r ↔ i, x ↔ c, r ↔ i, l ↔ o, f ↔ u, h ↔ s → auspicious
最终解密结果:
"The Year of the Snake is auspicious"
即:“蛇年是吉祥的。”
NSSCTF(The_Year_of_the_Snake_is_auspicious)
5好看的图片
foremost文件提取,得到一个zip,一个txt
txt内容如下
你找到了一段神秘的密码规则:
1. 第一位:数字的 ASCII 值减去 48。
2. 第二位:大写字母的 ASCII 值减去 64。
3. 第三位:特殊符号的 ASCII 值减去 32。
4. 第四位:非小写字母的 ASCII 值减去 47。
根据规则,以下密码的 ASCII 计算结果为:
- 第一位:7
- 第二位:6
- 第三位:88
- 第四位:-1
具体解法如下,所以压缩包密码=7Fx.
- 第一位:7+48 ASCII=7
- 第二位:6+64 ASCII=F
- 第三位:88+32 ASCII=x
- 第四位:-1+47 ASCII=.
得到9张图片
拼接扫码可得flag{Congratulations on getting this question right}
把flag改成NSSCTF{Congratulations on getting this question right}
6.简单的逆向
# 打乱顺序的flag
code_lines = [
"5: }",
"1: f",
"3: l",
"2: l",
"4: {",
"6: l",
"7: o",
"8: g",
"9: i",
"10: c",
"11: _",
"12: k",
"13: e",
"14: y"
]
fll{{logic_key)
# 打印代码行
for line in code_lines:
print(line)
手动拼接fll{{logic_key
出题人出题错误,logic_key位flag内容,格式位NSCCTF{logic_key}
7.你的flag被加密了
简单分析一下,key是一个数组,秘钥是key
有三个if,分别是判断小写字母,大写字母,数字,加密字符没有大写字母,不用考虑
因此,直接把+改成-,把-改成+
def custom_encrypt(plaintext):
encrypted = ""
key = [3, 5, 2]
key_index = 0
for char in plaintext:
if 'a' <= char <= 'z':
shift = key[key_index]
new_char = chr((ord(char) - ord('a') + shift) % 26 + ord('a'))
key_index = (key_index + 1) % len(key)
elif 'A' <= char <= 'Z':
shift = key[key_index]
new_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
key_index = (key_index + 1) % len(key)
elif '0' <= char <= '9':
num = int(char)
new_num = (num + 7) % 10
new_char = str(new_num)
else:
new_char = char
encrypted += new_char
return encrypted
encrypted_flag = custom_encrypt("这里藏着真正的flag,你得自己解出来")
print("加密后的flag是:", encrypted_flag)
exp如下:flag{lychee12224}
def custom_encrypt(plaintext):
encrypted = ""
key = [3, 5, 2]
key_index = 0
for char in plaintext:
if 'a' <= char <= 'z':
shift = key[key_index]
new_char = chr((ord(char) - ord('a') - shift) % 26 + ord('a'))
key_index = (key_index + 1) % len(key)
elif 'A' <= char <= 'Z':
shift = key[key_index]
new_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
key_index = (key_index + 1) % len(key)
elif '0' <= char <= '9':
num = int(char)
new_num = (num - 7) % 10
new_char = str(new_num)
else:
new_char = char
encrypted += new_char
return encrypted
encrypted_flag = custom_encrypt("iqcj{qafmgh89991}")
print("加密后的flag是:", encrypted_flag)
8. CTF
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
# 已知加密后的 flag
encrypted_flag = "GzSkR/OLfsenxQd5Hh4t2RlEwL/3JG5dW/gYu7YI1Os="
# 密钥和 IV(需要补齐到 16 字节)
key = b"12345".ljust(16, b'\0')
iv = b"123456".ljust(16, b'\0')
# 输出相关信息
print("加密后的 flag:", encrypted_flag)
print("密钥(Base64 编码):", base64.b64encode(key).decode())
print("IV(Base64 编码):", base64.b64encode(iv).decode())
print("加密模式: AES - CBC")
运行得到
加密后的 flag: GzSkR/OLfsenxQd5Hh4t2RlEwL/3JG5dW/gYu7YI1Os=
密钥(Base64 编码): MTIzNDUAAAAAAAAAAAAAAA==
IV(Base64 编码): MTIzNDU2AAAAAAAAAAAAAA==
加密模式: AES - CBC
找个网站解一下(注,都是base64编码)
flag{2025_qhmu_ctf}
9.喔艾亭嘟歌
下载得到一个“喔艾亭嘟歌.aup3”文件
通过搜索得知是audacity3.0以上的文件
打开看到base64编码
为什么是base64?,没有等于号,base64的等于号是不满足整除的情况下填充的
而且Zxxh是flag的替换,所以一定要对数据敏感
flag{2024_Club_Competition}