MoeCTF 2026 Web 安全与渗透测试 Writeup(下)
MoeCTF 2026 Web 安全与渗透测试 Writeup(下篇) 西电 CTF 终端 · MoeCTF 2026 新生赛 · Web 安全与渗透测试方向 · 下篇(共 6 题) (使用agent协助做题) 1. 熊出没(100 分) MoeCTF 2026 · Web 安全与渗透测试 · 100 分题目:熊出没(两只小熊在狗粉岭找蜂蜜,发现许多蜜罐,但有些是猎人设的陷阱。蜂蜜在 54321 端口) 打开题目是一个「狗粉岭」网页,中间一个表单让你输入「蜜罐地址」,提交后服务器帮你去「看看是不是真的蜂蜜」。 表单 POST /fetch,参数 url——服务器按你给的 URL 去抓内容,这明显是一个 SSRF(服务端请求伪造) 端点。SSRF 指攻击者让服务器代替自己去发起网络请求,从而访问攻击者本来访问不到的目标:普通用户只能从「外部」访问网站,但服务器往往在内网,能访问内网里不对外暴露的服务(数据库、缓存、内部 API)。如果网站有个「按用户给的 URL 去抓内容」的功能,就能传一个内网地址让它帮忙访问,再通过回显把结果带出来。 顺着提示「蜂蜜在 54321 端...
MoeCTF 2026 Web 安全与渗透测试 Writeup(上)
MoeCTF 2026 Web 安全与渗透测试 Writeup(上篇) 西电 CTF 终端 · MoeCTF 2026 新生赛 · Web 安全与渗透测试方向 · 上篇(共 7 题) 1. 查分系统(20 分) MoeCTF 2026 · Web 安全与渗透测试附件:system(2).html(静态网页) 打开附件,是一个「数学分析期末成绩查询」网页,只有一个学号输入框和查询按钮。网页是纯静态的——没有后端,所有逻辑和数据都跟着页面一起下发给浏览器。 在 <script> 里找到核心逻辑 searchScore(),全体学生成绩存在一个 allStudentData 数组里,查询时用 find() 按学号匹配后原样展示所有字段: 1234567891011121314151617181920212223242526272829303132const studentIdKey = `学号`;function searchScore() { const inputDom = document.getElementById("inpu...
备份文件信息泄露
从“备份文件”到“信息泄露”:CTF中那些藏在角落里的flag在网络安全的世界里,信息泄露是最常见、也最容易被忽视的漏洞之一。很多新手觉得“泄露个备份文件能有多大危害?”但事实上,在CTF(夺旗赛)和真实渗透测试中,一个不起眼的.bak文件、一个残留的.git目录,往往就是通向服务器权限或核心数据的大门。 今天这篇文章,会把“信息泄露”和“备份文件”相关的知识讲透,并列举CTF中常见的考题类型和解题思路。不管你是CTF新手,还是想巩固Web安全基础,相信都能有所收获。 一、什么是信息泄露?简单说,信息泄露就是本不该被外人看到的东西,因为配置不当、开发习惯不好或者疏忽,被暴露在了公网上。 比如: 网站管理员把数据库配置文件config.php备份成了config.php.bak,结果这个备份文件可以被直接下载。 开发者用Git管理代码,但把整个.git目录上传到了服务器,任何人都能还原出完整源码。 编辑器(如Vim)异常退出后留下了.swp临时文件,里面可能包含未保存的敏感内容。 服务器开启了目录浏览,别人能看到所有文件列表。 这些泄露的信息本身可能不是flag,但它们往往是...
序列化与反序列化———pop链构造
PHP反序列化与POP链完全指南 从零开始掌握PHP反序列化漏洞与POP链构造 一、序列化和反序列化到底是什么?概念解释简单说: 序列化:把内存中的对象、数组、变量等”打包”成一个字符串或字节流,方便存储或传输。 反序列化:把这个字符串或字节流再还原成原来的对象、数组、变量。 通俗比喻你有一个乐高城堡,如果想把它的结构告诉远方的朋友,不能直接把城堡寄过去,你可以把它拆成零件,并写一份”拼装说明书”。朋友拿到说明书后,按照说明书重新拼出一个城堡。 这个”拆成零件并写说明书”的过程就是序列化,朋友”按照说明书重新拼装”的过程就是反序列化。 代码示例在 PHP 中,主要使用这两个函数: 12serialize($obj); // 序列化unserialize($str); // 反序列化 效果演示1234567891011121314// 创建一个对象$obj = new stdClass();$obj->name = "test";$obj->age = 20;// 序列化$str = serialize($obj);echo $str;...
从C/C++到Python
从C/C++到Python如果你学过C或C++,现在想快速上手Python,那这篇文章就是为你准备的。直接告诉你”C++里这个东西对应Python里怎么写”。 前语很多人在学完C/C++之后接触Python,第一反应往往是:”这也太随意了吧?不用写类型?不用大括号?” 别慌。Python的语法设计就是为了让你少写代码、多做事。如果你已经习惯了C/C++的严谨,那Python对你来说基本就是”降维打击”——你唯一要做的,就是习惯它的表达方式。 这篇文章不会把每个知识点讲得特别深,但足够让你看懂别人的代码、自己写一些实用的小工具。遇到不会的,翻到对应的部分,看一眼就能想起来。 1. 缩进替代了大括号这大概是最让人困惑的地方,但其实适应起来很快。 代码示例C/C++ 写法: 1234if (score >= 60) { printf("及格了"); printf("恭喜你!");} Python 写法: 1234if score >= 60: prin...
常用Markdown 语法指南
常用Markdown 语法指南欢迎来到 Markdown 的世界!Markdown 是一种轻量级标记语言,它允许你使用易读易写的纯文本格式来编写文档,然后转换成有效的 HTML 文档。它的设计哲学是 “可读即所见”。 下面,我们将通过丰富的示例和效果演示,带你全面掌握 Markdown 的核心语法。 标题 (Headings)使用 # 符号来表示标题,从 # (一级标题) 到 ###### (六级标题)。 代码示例123456# 这是一级标题## 这是二级标题### 这是三级标题#### 这是四级标题##### 这是五级标题###### 这是六级标题 效果演示这是一级标题这是二级标题这是三级标题这是四级标题这是五级标题这是六级标题 段落与换行 (Paragraphs & Line Breaks)段落由一个或多个连续的文本行组成,段落之间用一个或多个空行分隔。要创建一个换行(即在不开始新段落的情况下换行),可以在行尾添加两个或多个空格,然后按回车。 代码示例12345这是第一段。段落之间用空行分隔。这是第二段。这是同一段落的第二行,但我在行尾加了两个空格, 所以这行会...






