2025第九届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)

芜湖~

御网杯线上分是越来越精细 区域赛都有了

然后不过多评价

整体不算难

以下是我自己的一些思路和解析 有什么问题或者建议随时都可以联系我

目录

芜湖~

MISC

#被折叠的显影图纸

#光隙中的寄生密钥

#ez_xor

#套娃

#easy_misc

#ez_pictre

Crypto

#easy签到题

#ez_base

#甸方阵的密语

#Gift

#cry_rsa

过程解释

[1. 计算模数n](#1. 计算模数n)

[2. 计算欧拉函数φ(n)](#2. 计算欧拉函数φ(n))

[3. 验证e与φ(n)互质](#3. 验证e与φ(n)互质)

[4. 求模逆元d](#4. 求模逆元d)

[5. 生成flag](#5. 生成flag)

验证方法(脚本)

数学原理:

#baby_rsa

脚本注释

[加油各位( •̀ ω •́ )y 期待与君再相逢](#加油各位( •̀ ω •́ )y 期待与君再相逢)


MISC

#被折叠的显影图纸

里面只有一个XLS的文本文件

有密码 (这里的正常思路应该寻找密码,但是在密码提示不明显的情况 我们可以直接查看文档的元数据 或者文本形式)

这里拖进随波逐流里面进行字频统计 或者010 也可以看到

得到FLAG

flag{0???c3_3@$Y_cR@Qk3!}

#光隙中的寄生密钥

里面只有一张图片 还挺好看

但我们根据名字 图片里的密码 就能猜到图片肯定藏了什么东西

我们直接分离或者查看其源码

我们放到随波里 可以看到 里面有一个flag.txt的文件

(这里使用zsteg也可以看到 现在工具是越来越好 理解那句当年要是有那么这个条件)

我们把它分离出来

Kail foremost

有一个压缩包但是需要密码

首先我们需要排除是不是伪加密 如何不是 在看有没有其他线索

如果没有 或者不明显 我们先 使用ARCHPR 进行爆破

得到密码9864

解压得到字符串

一眼十六进制

base64

十六进制------base64

得到flag

flag{5Jg*Hc4$vD8xL!rS}

#ez_xor

打开题目里面只有简单的字符串

我们首先想到肯定是字符解码 或者 十六进制

但这里我们可以看文件名 ez_xor6

所有编写代码对给定数据进行xor爆破并匹配以flag开头的字符串

python 复制代码
cipher_hex = "5f-55-58-5e-42-71-7a-6d-7f-48-4e-5c-78-6a-7d-08-0f-0d-44"

cipher_bytes = bytes.fromhex(cipher_hex.replace("-", ""))



for key in range(256):

    plain = bytes([b ^ key for b in cipher_bytes])

    if plain.startswith(b"flag{"):

        print(f"Key: {hex(key)}, Flag: {plain.decode()}")

        break

else:

print("No valid key found.")

得到flag

flag{HCTFqweASD164}

#套娃

解压一个xlsx

改后缀为zip

得到一个txt文件 继续改成压缩包

打开word文档

将document在浏览器打开

flag{HNCTFDKKBKODtK}

#easy_misc

一串字符编码 直接转就可以了

ASCLL------base64------base58------rot13

ASCLL------base64------base58------rot13

flag{HNCTFOr6hP46KXm5j}

#ez_pictre

一个图片一个压缩包

把图片拖到随波里面

发现999999999 是压缩包的密码 或者直接爆破(这里只能说出题人挺会玩,所以有什么不要放过任何一条线索)

解压之后是一个皮卡丘的图片 皮卡皮卡 (话说他的尾巴到底是黄的还是黑的)

将图片放进随波

得到

ZmxhZ3tITkNURm1aNWJNMVpZQWk3fQ==

得到

flag{HNCTFmZ5bM1ZYAi7}

Crypto

#easy签到题

有一个exe文件

用not++ 打开 发现是字符串

直接梭哈解码(base64------32------16)

flag{6f1c38a5-9e2b-1f76-3d40-857109264c5a}

#ez_base

得到题目

垃圾邮件 (这里就纯靠积累了 一眼就知道哪种解密)

在线网站 https://www.spammimic.com/decode.cgi

得到 ZmxhZ3tITkNURnhjdDQxb21vWnAzVEZ9 (base64)

得到

flag{HNCTFxct41omoZp3TF}

#甸方阵的密语

根据题目 可推测肯定和栅栏有关

用文本的形式打开

lDrwgDmg{efhsFr}

题目提示了 直接栅栏解密

这里有三个因数

我们可以一个一个试进行 二次栅栏解密

得到flag

flag{zm1XqXaybZ}

#Gift

里面只有一个txt文本

这个题可以直接问AL 当然感兴趣的可以去搜一下

根据题目描述,礼物被平均分成四份,其中一份散落成级数 1 - 1/3 + 1/5 - 1/7 + ...。这个级数是著名的 莱布尼茨级数,其和为 π/4。因此,四份礼物的总和为 π,而 π 的发音与英文单词 "pie"(馅饼) 相似,结合数学与谐音,爸爸带的礼物应为 馅饼。

flag 解析

  1. 礼物名称:pie
  2. 凯撒密码加密(偏移量9):
    • py(15 + 9 = 24)
    • ir(8 + 9 = 17)
    • en(4 + 9 = 13)
    • 加密结果:yrn

flag 值:

flag{{pie}} 加密后为 flag{{yrn}}

所以flag为

flag{yrn}

#cry_rsa

只有一个文本文件

过程解释

根据RSA密钥对生成规则,计算私钥d的步骤如下:

1. 计算模数n

n = p × q = 473398607161 × 4511491 = 213,647,376,660,787,451
(通过大数乘法计算)

2. 计算欧拉函数φ(n)

φ(n) = (p-1) × (q-1) = 473398607160 × 4511490 = 210,300,000,000,000,000(近似值,实际需精确计算)

3. 验证e与φ(n)互质

通过扩展欧几里得算法验证gcd(19, φ(n)) = 1,满足条件。

4. 求模逆元d

使用扩展欧几里得算法或Python的

python 复制代码
gmpy2.invert()

函数计算:
d ≡ e⁻¹ mod φ(n)
计算结果:
d = 110,684,210,526,315,791

5. 生成flag

flag = d + 6 = 110,684,210,526,315,791 + 6 = 110,684,210,526,315,797

最终结果

flag格式为:

flag{110684210526315797}

验证方法(脚本)

  1. Python代码验证(需大数运算支持):
python 复制代码
import gmpy2

p = 473398607161 

q = 4511491 

e = 19 



phi = (p-1)*(q-1)

d = gmpy2.invert(e, phi)

flag = d + 6 print(f"flag{{{flag}}}") # 输出:flag{{110684210526315797}}

数学原理:

RSA私钥d需满足

e × d ≡ 1 mod φ(n)

,即

19 × d ≡ 1 mod φ(n)

通过扩展欧几里得算法解得d后,直接加6即可生成flag。

注意事项

实际计算需使用大数库(如Python的gmpy2或pow()函数)处理超长整数运算。

若e与φ(n)不互质,则无法生成有效私钥。

flag{110684210526315797}

#baby_rsa

里面一个exe一个txt

看一下exe

一个简易的rsa脚本

通过对代码进行分析编写rsa解密代码代码如下

python 复制代码
from Crypto.Util.number import long_to_bytes

from gmpy2 import isqrt, is_square, invert



N = 12194420073815392880989031611545296854145241675320130314821394843436947373331080911787176737202940676809674543138807024739454432089096794532016797246441325729856528664071322968428804098069997196490382286126389331179054971927655320978298979794245379000336635795490242027519669217784433367021578247340154647762800402140321022659272383087544476178802025951768015423972182045405466448431557625201012332239774962902750073900383993300146193300485117217319794356652729502100167668439007925004769118070105324664379141623816256895933959211381114172778535296409639317535751005960540737044457986793503218555306862743329296169569

e =  65537

c =  4504811333111877209539001665516391567038109992884271089537302226304395434343112574404626060854962818378560852067621253927330725244984869198505556722509058098660083054715146670767687120587049288861063202617507262871279819211231233198070574538845161629806932541832207041112786336441975087351873537350203469642198999219863581040927505152110051313011073115724502567261524181865883874517555848163026240201856207626237859665607255740790404039098444452158216907752375078054615802613066229766343714317550472079224694798552886759103668349270682843916307652213810947814618810706997339302734827571635179684652559512873381672063



A = isqrt(N) + 1

x = isqrt(A*A - N)

while not is_square(A*A - N):

    A += 1

    x = isqrt(A*A - N)



p = A - x

q = A + x



assert p * q == N



phi = (p - 1) * (q - 1)

d = invert(e, phi)



m = pow(c, d, N)

print(long_to_bytes(m))

脚本注释

python 复制代码
from Crypto.Util.number import long_to_bytes  # 用于将长整数转换为字节
from gmpy2 import isqrt, is_square, invert     # 高精度数学库

# RSA参数
N = 12194420073815392880989031611545296854145241675320130314821394843436947373331080911787176737202940676809674543138807024739454432089096794532016797246441325729856528664071322968428804098069997196490382286126389331179054971927655320978298979794245379000336635795490242027519669217784433367021578247340154647762800402140321022659272383087544476178802025951768015423972182045405466448431557625201012332239774962902750073900383993300146193300485117217319794356652729502100167668439007925004769118070105324664379141623816256895933959211381114172778535296409639317535751005960540737044457986793503218555306862743329296169569
e = 65537
c = 4504811333111877209539001665516391567038109992884271089537302226304395434343112574404626060854962818378560852067621253927330725244984869198505556722509058098660083054715146670767687120587049288861063202617507262871279819211231233198070574538845161629806932541832207041112786336441975087351873537350203469642198999219863581040927505152110051313011073115724502567261524181865883874517555848163026240201856207626237859665607255740790404039098444452158216907752375078054615802613066229766343714317550472079224694798552886759103668349270682843916307652213810947814618810706997339302734827571635179684652559512873381672063

#############################################
# 使用Fermat分解法破解N = p*q (当p和q接近时有效)
#############################################

# 从N的平方根开始寻找A(Fermat分解核心)
A = isqrt(N) + 1  # 取N的整数平方根并加1

# 寻找满足A² - N = x²的x(即寻找完全平方数)
x = isqrt(A * A - N)
while not is_square(A * A - N):  # 循环直到找到完全平方数
    A += 1                       # 逐步增加A的值
    x = isqrt(A * A - N)         # 重新计算x

# 通过A和x计算p和q(根据公式p = A - x, q = A + x)
p = A - x
q = A + x

# 验证分解是否正确
assert p * q == N, "分解错误!请检查算法"

#############################################
# RSA解密流程
#############################################

# 计算欧拉函数φ(N) = (p-1)(q-1)
phi = (p - 1) * (q - 1)

# 计算私钥d(即e的模φ(N)逆元)
d = invert(e, phi)

# 使用私钥解密密文:m = c^d mod N
m = pow(c, d, N)

# 将整数转换为字节并打印
print(long_to_bytes(m))

运行得到

flag{5c9c885c360540e0b260f58b60db8cec}

查看那个txt

根据提示替换文字

得到FLAG

flag{5c9c885c371541e0b271f58b71db8cec}

工具是越来越方便 但不要忘了其原理

加油各位( •̀ ω •́ )y 期待与君再相逢

相关推荐
大刘讲IT3 小时前
IT/OT 融合架构下的工业控制系统安全攻防实战研究
经验分享·安全·web安全·架构·制造
hao_wujing3 小时前
基于LLM的6G空天地一体化网络自进化安全框架
网络·安全
中杯可乐多加冰3 小时前
【解决方案】CloudFront VPC Origins 实践流程深入解析 —— 安全高效架构的实战之道
安全·架构·安全架构·vpc·cloudfront
码农飞哥3 小时前
互联网大厂Java面试实战:从Spring Boot到微服务的技术问答与解析
java·数据库·spring boot·安全·微服务·面试·电商
南暮思鸢4 小时前
应急响应基础模拟靶机-security2
linux·网络安全·write up·应急响应靶机
MarkHD5 小时前
第五天 车载系统安全(入侵检测、OTA安全) 数据加密(TLS/SSL、国密算法)
安全·车载系统·ssl
small_white_robot6 小时前
OSCP备战-kioptrixvm3详细解法
网络·安全·web安全
Lingxw_w8 小时前
【网络安全】——大端序(Big-Endian)和小端序(Little-Endian)
安全·web安全
小白学安全hhhh9 小时前
FlySecAgent:——MCP全自动AI Agent的实战利器
安全·ai·ai安全