iami233
iami233
文章156
标签37
分类4

文章分类

文章归档

山东省大学生网络安全技能大赛 2023 Writeup

山东省大学生网络安全技能大赛 2023 Writeup

写在前面

2021 年网络安全爱好者赛道选拔的时候差亿点晋级,所以没打成(因新冠疫情延期到现在举办…),找朋友要了所有附件做了做,时隔两年回头看感觉题目还算可以,整体难度不是很难。

Misc

简单的编码

二八二八,咔咔就是发!

就简单的进制转换,四位为八进制,四位以上是二进制

1
2
3
4
5
6
7
8
9
10
11
12
13
import libnum
import base64
s = '0122 110001 1101011 0172 1010010 0105 061 1011010 0127 1101100 1100100 0110 0122 1010100 0116 1000101 0124 110000 064 1111010 0121 060 0144 1001110 1010111 1010101 0122 1001000 0124 1010101 0112 0130 0122 061 0106 0141 0126 0105 0164 1001110 0127 1101100 0144 1001000 1010111 0126 1110000 0105 1010010 060 111001 1001011 1010110 0105 1100100 1010110 1010111 1101100 0122 1010000 0124 0154 1001010 1010100 1010010 110001 0153 1111001 0122 1000101 1100100 0120 1010001 0154 0144 0110 1010110 1010100 1001110 1000101 1010010 1010101 110101 1010011 0126 060 1100100 0116 1010111 0153 1010010 0116 0124 0126 0112 1010101 1010010 060 1000110 0141 1010110 0105 1000110 0116 1010111 1101100 0144 1001000 1010100 1010100 1001010 1000101 0124 1010101 110101 0123 0126 060 0144 0126 0127 1101100 0122 1001100 1010100 1101100 0112 1011000 0122 110000 060 110000 1010110 1000101 1100100 0116 1010111 0154 0122 0110 1010110 0124 1001110 0105 1010010 0125 061 0141 0125 1101011 1100100 1001110 0115 0154 0122 0110 0124 0153 1001010 1011001 0124 1010110 1000101 071 1010000 1010100 110000 111001 1010000 0124 110000 111101'

s = s.split()
flag = ''
for i in s:
if len(i) > 4:
flag += libnum.b2s(i).decode()
else:
flag += chr(int(i,8))
print(libnum.n2s(int(base64.b32decode(base64.b64decode(flag)),16)).decode())
# flag{00d56b957bd8ebf2b0064fe5f935b154}

Stego

我应该去爱你

全世界还有谁,比我们能绝配~

image-20231022212652565

数独

闲来无事,做个数独吧
tips:将数独的结果横向排列,即可得到一组16位的神奇密码

数独如下所示,根据题目描述解出数独得到 4132234132141423

1
2
3
4
0000  ->  4132
2000 -> 2341
0010 -> 3214
0403 -> 1423

然后发现 r0,g0,b0 存在隐写,判断为 lsb 隐写,直接解密即可

1
2
3
4
5
PS D:\Misc\png\lsb> python2 lsb.py extract shudok.png-stego.png flag.txt 4132234132141423
[+] Image size: 690x683 pixels.
[+] Written extracted data to flag.txt.
PS D:\Misc\png\lsb> cat flag.txt
flag{7d692a3c795478b16631eb9b43677075}

莫生气

他人生气我不气,气出病来无人替

发现 jpeg 文件尾部有一个缺失文件头的 png ,手动补上文件头然后分离即可

1
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

image-20231024135928699

然后直接 Python3 版本的 bwm 双图盲水印得到 flag

1
2
PS D:\Misc\BlindWaterMark> python .\bwmforpy3.py decode .\flag.jpeg .\flag.png .\out.png
image<.\flag.jpeg> + image(encoded)<.\flag.png> -> watermark<.\out.png>

image-20231024135904949

Forensics

金刚大战哥斯拉

哥斯拉大战金刚,到底谁会获胜呢?

直接题目推测肯定是哥斯拉 Webshell 流量分析,直接一键导出所有 HTTP对象列表,响应包里可以发现密钥,同时在 shell(22).php 发现关键流量,直接解密即可,或者套模板

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}

$key = '9c2ffaf6a14493bf';
$res = '';
echo base64_encode(gzdecode(encode(base64_decode(urldecode($res)),$key)));

image-20231023182046120

小刘的硬盘

小刘的硬盘-小刘有一块硬盘误删了一些文件,你能帮帮他么?

直接使用 DiskGenius 打开虚拟磁盘文件,然后 恢复文件 发现一个 flag.zip

image-20231023183000571

导出 flag.zip 后,打开发现有密码, 同时备注里面给出 小刘喜欢用自己的名字+生日当密码,直接写脚本生成字典

1
2
3
4
5
f = open('pass.txt','w')
for i in range(1970, 2001):
for j in range(1,13):
for k in range(1,31):
print("小刘{}{:0>2d}{:0>2d}".format(i,j,k),file=f)

image-20231023184115363

Crypto

小试牛刀

变异的凯撒密码,做到这里翻了翻吃灰已久的工具库,上次遇到变异凯撒貌似就在 2021 年初刚入门 CTF 的时候…不愧是 2021 年延期至今的比赛,都是陈年老考点。

1
2
3
4
5
6
7
s = b'ipfm\x82Kj]p~l?\x82ogw\x85mt[K\x8br\x97'

k = 3
for i in s:
print(chr(i - k) , end='')
k += 1
# flag{CaSer_1s_VerY_E4sY}

Reverse

人生模拟

定位到 main() 发现关键点在 sub_40350F(),直接根据加密逻辑运行一下即可

image-20231023191610006

1
2
3
4
s = [432,408,429,438,452,246,243,417,423,444,236,231,203,447,207,417,253,224,204,443,419,248,442,241,203,251,224,239,441,254,444,246,203,245,255,445,248,478]
for i in s:
print(chr((i>>2)^0xa),end='')
# flag{76bce138e9b529db4d68421d5e7875e4}
本文作者:iami233
本文链接:https://5ime.cn/sdnisc-2023.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可