第九届上海市大学生网络安全大赛数据安全赛道
str3ct 发表于 湖南 CTF 848浏览 · 2024-05-27 14:51

0x01 api接口安全分析1

题目描述:

版本过低会加剧数据安全的风险,请问该组件对应的服务器端程序的版本是什么?版本信息的格式
基本为:a.b.c

接着打开比赛环境,尝试获取信息。
服务器端版本:

0x02 api接口安全分析2

题目描述:

问题二:重要数据在传输的过程中进行了加密,请问加密密钥是什么?

0x03 api接口安全分析3

题目描述:

问题三:不安全的API协议导致了用户身份证号的泄漏,请问张翼德(用户名为zhangyide)的身
份证号码是什么

然后尝试翻阅附件,发现解密的iv,先base64解密,然后aes

0x04 数据勒索分析1

题目描述:

问题一:接收敏感数据的设备的IPv4地址是什么?

直接IDA打开恶意exe,F12可以在字符串中看到192.168.5.104这个ip,或者直接扔微步沙箱也可以看到

0x05 数据勒索分析2

题目描述:

问题二:林秀梅(邮箱:mzheng@example.net)的身份证号是什么?

直接在流量包中搜索mzheng@example.net这个邮箱

0x06 数据勒索分析3

题目描述:

问题三:杨玲(邮箱:zengyan@example.com)的身份证号是什么?

使用恶意软件对Iv.txt.encrypt再加密

only_encrypt_release.exe en lv.txt.encrypt

生成lv.txt.encrypt.encrypt文件,打开就是泄露信息,搜索zengyan@example.com

0x07 半结构化数据识别与分析

题目描述:

题目描述:您是一名运营商下属的数据安全分析师,专注于大流量分析和数据泄露防护。您的研究目标
是通过汇总与分析已被攻击且已造成信息泄露的各大企业HTTP流量,揭示攻击者的画像,并统计汇总泄
露的敏感信息。通过对攻击行为的深入分析,您希望能够为网络安全防护提供数据支持和策略建议。附
件提供了已汇总的各个地方已被攻击且已造成数据泄露的接口访问HTTP流量,要求您对作为半结构化数
据HTTP流量进行数据格式化,并根据题目提取关键信息,作为flag提交

问题一:请你根据附件中的流量数据进行统计汇总,提取出现攻击次数最多的useragent。在提取
出useragent后,使用MD5算法对其进行加密,并将加密后的32位十六进制字符串作为flag进行
提交。

0x08 口令画像分析1

题目描述:

请根据提供的《分析规则》文档,对当前附件中的数据进行统计,以确定不同密码等级(1至4级)
的记录数量。统计完成后,将各等级的记录数量按从小到大的顺序排列,并用逗号分割形成一串明
文数字。随后,使用MD5算法对这串明文进行加密,得到一个32位的十六进制字符串。

# -*- coding: gb2312 -*-
import re

def password_level(password):
    # 判断密码是否仅由数字组成
    if re.match(r'^([0-9]+|[a-z]+)$', password):
        return 1
    # 判断密码是否由小写字母和数字组成
    if re.match(r'^[a-z0-9]+$', password):
        return 2
    # 判断密码是否包含大写字母、小写字母和数字
    if re.match(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]+$', password):
        return 3

    # 判断密码是否包含大写字母、小写字母、数字和特殊字符
    if re.match(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z0-9\s])[a-zA-Z\d\W]+$', password):
        return 4

    return 0

def count_password_levels_from_file(filename):
    level_counts = {1: 0, 2: 0, 3: 0, 4: 0}
    with open(filename, 'r') as file:
        for line in file:
            password = line.strip()
            level = password_level(password)
            level_counts[level] += 1
    return level_counts

# 测试
filename = r"C:\Users\Drak\Desktop\password.txt"  # 文件路径
result = count_password_levels_from_file(filename)
print("密码等级统计:", result)
2493,4980,5052,7475

0x09 口令画像分析2

题目分析:

问题二:请再次依据《分析规则》文档,统计当前附件数据表中密码等级为4,同时满足出生日期
为2002年,星座为双子座,且性别为女性的记录数量。完成统计后,使用MD5算法对记录数量进
行加密,得到一个32位的十六进制字符串。

# -*- coding: gb2312 -*-
import openpyxl
import re

def check_password_complexity(password):
    # 正则表达式匹配包含大小写字母、数字和至少一个特殊字符的字符串
    return bool(re.match("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9]).+$", password))

def is_female(id_number):
    # 解析出生日期
    birth_date = id_number[6:14]
    # 解析出生日期的年份
    year = int(birth_date[:4])
    # 解析出生日期的月份
    month = int(birth_date[4:6])
    # 解析出生日期的日期
    day = int(birth_date[6:8])

    sex = int(id_number[16:17])
    # 检查年份是否为2002年,月份和日期是否在双子座的日期范围内
    if year == 2002 and ((month == 5 and day >= 21) or (month == 6 and day <= 21)) and sex%2==0:
        return True
    else:
        return False

def main():
    filename = r'C:\Users\Drak\Desktop\user.xlsx'
    wb = openpyxl.load_workbook(filename)
    sheet = wb.active

    female_twins = []

    for row in sheet.iter_rows(min_row=2, values_only=True):  # 从第二行开始遍历
        id_number = row[3]  # 假设身份证号在D列
        password = row[2]  # 假设密码在C列

        if is_female(id_number) and check_password_complexity(password):
            female_twins.append(row)

    # 打印满足条件的行
    for row in female_twins:
        print(row)
    print(len(female_twins))

if __name__ == "__main__":
    main()


flag就是129的md5的值

0x10数据安全1

题目描述:

某公司开发了一套自己研发的加密算法对公司内部数据进行加密,现需要数据安全专家对算法进行
安全性测试,以防止攻击者通过加密后的结果获取到明文。你能根据输出的结果,得到输出的明文

这个直接搜索到了原题:https://blog.csdn.net/2202_75413341/article/details/134585199
链接中的脚本稍微修改一下就可以了
关键部分:

0 条评论
某人
表情
可输入 255