2025年江西省“天工杯”数据安全管理职业技能竞赛线上赛wp(部分)
字数 2415 2025-09-23 19:27:38

2025年江西省“天工杯”数据安全管理职业技能竞赛线上赛题解

数据安全题

1. 解压的密码

题目描述
小王需要将一份秘密的文件发给小李,为了确保文件的安全,他使用了密码对文件进行加密。每次加密的密码都会进行变更,密码通过一个双方约定好的方法进行了编码。已知其中一个解压密码编码后为 N0MydWZ1d2lURU5CdUdWVUhvbTJTZQ==,请分析出原始的解压密码并进行提交。

解题步骤

  1. 编码字符串为 Base64 编码,解码后得到原始密码。
  2. 使用 Base64 解码:
    import base64
    encoded = "N0MydWZ1d2lURU5CdUdWVUhvbTJTZQ=="
    decoded = base64.b64decode(encoded).decode('utf-8')
    print(decoded)
    
  3. 解码结果即为原始解压密码。

答案
原始解压密码为解码后的字符串。


2. 解压的密码2

题目描述
提供了一段 Python 代码(strangersa.py),用于生成加密参数。已知输出参数 c(密文)、e(公钥)、n(模数)和 hint(提示),要求恢复原始密码。

解题步骤

  1. 分析代码逻辑:

    • m 是原始密码的整数形式。
    • p 是 1024 位素数。
    • q 是通过 q = p * 7 + i 生成的素数(i 从小递增直到 q 为素数)。
    • r 是另一个 1024 位素数。
    • n = p * q * r
    • e = 65537
    • c = pow(m, e, n)
    • hint = pow(p, 3, n)
  2. 利用 hint 恢复 p

    • 由于 hint = p^3 mod n,且 p^3 < n(因为 p 是 1024 位,n 是 3072 位),所以 p = hint^(1/3)(整数立方根)。
  3. 恢复 q

    • 计算 n_p = n // p
    • 遍历 i(从 1 开始),计算 q_candidate = 7 * p + i,检查是否整除 n_p
    • 找到 q 后验证是否为素数。
  4. 恢复 rr = n // (p * q)

  5. 计算私钥 d

    • phi = (p-1) * (q-1) * (r-1)
    • d = inverse(e, phi)
  6. 解密:m = pow(c, d, n),然后转换为字节串。

答案
原始密码为 f8be83156f83438cb172651ec3c5e168


3. numberleak

题目描述
小明设计了一套基于多项式加密的系统,密钥是多项式的根。通过窃取的加密多项式,找出根并计算指定值以验证安全漏洞。连接服务器 nc 111.74.9.131 18060 进行交互。

解题步骤

  1. 解析多项式字符串,提取系数和模数 p

  2. 根据查询要求(如 Vx + Vy + ...),计算函数值。

  3. 计算函数值公式:

    • 设多项式为 f(x) = f0 * x^c + f1 * x^(c-1) + ... + fc
    • 计算 inv_f0 = pow(f0, p-2, p)(模逆元)。
    • 对于每个 k(查询中的数字),计算 j = c + 1 - k
    • 计算项 term = f[j] * inv_f0 % p,若 j 为奇数则取负。
    • 累加所有项并取模 p
  4. 将结果转换为十六进制(不带 0x)发送给服务器。

代码实现
见题目提供的 solved.py


4. 数据安全4

题目描述
某公司客户联系表泄露,需通过 IM 截图工具的隐写功能还原截图来源。隐写机制包含截取者的姓名和工号,提交 md5(姓名:工号)

解题步骤

  1. 分析截图文件的隐写数据(如 EXIF 信息、二进制隐写等)。
  2. 提取姓名和工号。
  3. 计算 md5(姓名:工号)

答案
需根据实际隐写数据提取后计算。


5. 数据安全5

题目描述
实验室电脑被入侵,窃取了登录验证程序和流量包。分析登录程序和解密流量包,获取工作人员的验证 ID。

解题步骤

  1. 逆向登录程序,发现使用 SM4 算法和密钥。
  2. 从流量包中提取加密数据。
  3. 使用 SM4 解密得到验证 ID。

答案
验证 ID 需通过解密流量包获得。


数据分析题

题目一:Webshell 攻击分析

问题

  1. 攻击者最终使用的 Webshell 文件名是什么?
  2. Webshell 流量加密的密钥是什么?
  3. 攻击者窃取敏感文件所执行命令的 MD5 值是什么?

解题步骤

  1. 分析流量包,发现通过 shell.php 写入混淆的 Webshell,文件名为 en.php
  2. 反混淆 en.php 得到原始代码,密钥为 aa90999ce3aa3fc8413a442d7c39ee04
  3. 提取攻击者执行的命令(如 cat /etc/passwd),计算其 MD5 值。

答案

  1. en.php
  2. aa90999ce3aa3fc8413a442d7c39ee04
  3. 执行命令的 MD5 值(需根据实际命令计算)。

题目二:Tomcat 暴力破解与数据库窃取

问题

  1. 攻击者对 Tomcat 管理后台暴力破解的失败尝试次数是多少?成功登录的口令是什么?
  2. 窃取的数据库用户口令是什么?
  3. 数据库中第三位用户的手机号是什么?

解题步骤

  1. 分析流量包:
    • 过滤认证失败包(状态码 401),统计失败次数(82 次)。
    • 成功登录包(状态码 302)的 Basic 认证解码得口令 1234567890
  2. 分析数据库访问流量,提取查询语句或直接获取口令。
  3. 查询用户表,提取第三位用户的手机号。

答案

  1. 82:1234567890
  2. 数据库口令(需根据流量分析)
  3. 第三位用户的手机号(需根据数据库内容)

总结

本题解涵盖了数据安全与数据分析的主要知识点,包括加密算法、多项式计算、流量分析和逆向工程。关键点包括 Base64 解码、RSA 参数恢复、多项式求值、Webshell 分析、暴力破解统计和数据库信息提取。实际解题需结合附件流量包和代码文件进行深入分析。

2025年江西省“天工杯”数据安全管理职业技能竞赛线上赛题解 数据安全题 1. 解压的密码 题目描述 小王需要将一份秘密的文件发给小李,为了确保文件的安全,他使用了密码对文件进行加密。每次加密的密码都会进行变更,密码通过一个双方约定好的方法进行了编码。已知其中一个解压密码编码后为 N0MydWZ1d2lURU5CdUdWVUhvbTJTZQ== ,请分析出原始的解压密码并进行提交。 解题步骤 编码字符串为 Base64 编码,解码后得到原始密码。 使用 Base64 解码: 解码结果即为原始解压密码。 答案 原始解压密码为解码后的字符串。 2. 解压的密码2 题目描述 提供了一段 Python 代码( strangersa.py ),用于生成加密参数。已知输出参数 c (密文)、 e (公钥)、 n (模数)和 hint (提示),要求恢复原始密码。 解题步骤 分析代码逻辑: m 是原始密码的整数形式。 p 是 1024 位素数。 q 是通过 q = p * 7 + i 生成的素数( i 从小递增直到 q 为素数)。 r 是另一个 1024 位素数。 n = p * q * r 。 e = 65537 。 c = pow(m, e, n) 。 hint = pow(p, 3, n) 。 利用 hint 恢复 p : 由于 hint = p^3 mod n ,且 p^3 < n (因为 p 是 1024 位, n 是 3072 位),所以 p = hint^(1/3) (整数立方根)。 恢复 q : 计算 n_p = n // p 。 遍历 i (从 1 开始),计算 q_candidate = 7 * p + i ,检查是否整除 n_p 。 找到 q 后验证是否为素数。 恢复 r : r = n // (p * q) 。 计算私钥 d : phi = (p-1) * (q-1) * (r-1) 。 d = inverse(e, phi) 。 解密: m = pow(c, d, n) ,然后转换为字节串。 答案 原始密码为 f8be83156f83438cb172651ec3c5e168 。 3. numberleak 题目描述 小明设计了一套基于多项式加密的系统,密钥是多项式的根。通过窃取的加密多项式,找出根并计算指定值以验证安全漏洞。连接服务器 nc 111.74.9.131 18060 进行交互。 解题步骤 解析多项式字符串,提取系数和模数 p 。 根据查询要求(如 Vx + Vy + ... ),计算函数值。 计算函数值公式: 设多项式为 f(x) = f0 * x^c + f1 * x^(c-1) + ... + fc 。 计算 inv_f0 = pow(f0, p-2, p) (模逆元)。 对于每个 k (查询中的数字),计算 j = c + 1 - k 。 计算项 term = f[j] * inv_f0 % p ,若 j 为奇数则取负。 累加所有项并取模 p 。 将结果转换为十六进制(不带 0x )发送给服务器。 代码实现 见题目提供的 solved.py 。 4. 数据安全4 题目描述 某公司客户联系表泄露,需通过 IM 截图工具的隐写功能还原截图来源。隐写机制包含截取者的姓名和工号,提交 md5(姓名:工号) 。 解题步骤 分析截图文件的隐写数据(如 EXIF 信息、二进制隐写等)。 提取姓名和工号。 计算 md5(姓名:工号) 。 答案 需根据实际隐写数据提取后计算。 5. 数据安全5 题目描述 实验室电脑被入侵,窃取了登录验证程序和流量包。分析登录程序和解密流量包,获取工作人员的验证 ID。 解题步骤 逆向登录程序,发现使用 SM4 算法和密钥。 从流量包中提取加密数据。 使用 SM4 解密得到验证 ID。 答案 验证 ID 需通过解密流量包获得。 数据分析题 题目一:Webshell 攻击分析 问题 攻击者最终使用的 Webshell 文件名是什么? Webshell 流量加密的密钥是什么? 攻击者窃取敏感文件所执行命令的 MD5 值是什么? 解题步骤 分析流量包,发现通过 shell.php 写入混淆的 Webshell,文件名为 en.php 。 反混淆 en.php 得到原始代码,密钥为 aa90999ce3aa3fc8413a442d7c39ee04 。 提取攻击者执行的命令(如 cat /etc/passwd ),计算其 MD5 值。 答案 en.php aa90999ce3aa3fc8413a442d7c39ee04 执行命令的 MD5 值(需根据实际命令计算)。 题目二:Tomcat 暴力破解与数据库窃取 问题 攻击者对 Tomcat 管理后台暴力破解的失败尝试次数是多少?成功登录的口令是什么? 窃取的数据库用户口令是什么? 数据库中第三位用户的手机号是什么? 解题步骤 分析流量包: 过滤认证失败包(状态码 401),统计失败次数(82 次)。 成功登录包(状态码 302)的 Basic 认证解码得口令 1234567890 。 分析数据库访问流量,提取查询语句或直接获取口令。 查询用户表,提取第三位用户的手机号。 答案 82:1234567890 数据库口令(需根据流量分析) 第三位用户的手机号(需根据数据库内容) 总结 本题解涵盖了数据安全与数据分析的主要知识点,包括加密算法、多项式计算、流量分析和逆向工程。关键点包括 Base64 解码、RSA 参数恢复、多项式求值、Webshell 分析、暴力破解统计和数据库信息提取。实际解题需结合附件流量包和代码文件进行深入分析。