TypechoJoeTheme

霍雅的博客

登录
用户名
密码
/
注册
用户名
邮箱

NSSCTF [青海民族大学 2025 新生赛] wp(没有pwn)

2025-03-04
/
0 评论
/
15 阅读
/
正在检测是否收录...
03/04

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}

9.pwn我不会

朗读
赞(0)
版权属于:

霍雅的博客

本文链接:

https://huoya.work/bk/index.php/archives/161/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月