如何复现ThinkPHP6中任意文件创建的漏洞?

2026-05-08 02:510阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计173个文字,预计阅读时间需要1分钟。

如何复现ThinkPHP6中任意文件创建的漏洞?

03+ 原理解析

先抛开上面的问题,我们看一下thinkphp是如何存储session的。

系统定义了接口thinkcontractSessionHandlerInterface

SessionHandlerInterface::write方法在本地化会话数据的时候执行,系统会在每次请求结束的时候自动执行。

再看看thinksessiondriverFile类是怎么实现的。

先通过getFileName根据$sessID生成文件名,再writeFile写入文件。

跟进getFileName,直接将传入的$sessID拼接后作为文件名。由于$sessID可控,所以文件名可控。

04 演示

分析到这里,整个漏洞流程基本上已经很清晰了。下面给出本地的演示结果。

php中文网,大量的免费thinkphp入门教程,欢迎在线学习!

标签:Thinkphp6

本文共计173个文字,预计阅读时间需要1分钟。

如何复现ThinkPHP6中任意文件创建的漏洞?

03+ 原理解析

先抛开上面的问题,我们看一下thinkphp是如何存储session的。

系统定义了接口thinkcontractSessionHandlerInterface

SessionHandlerInterface::write方法在本地化会话数据的时候执行,系统会在每次请求结束的时候自动执行。

再看看thinksessiondriverFile类是怎么实现的。

先通过getFileName根据$sessID生成文件名,再writeFile写入文件。

跟进getFileName,直接将传入的$sessID拼接后作为文件名。由于$sessID可控,所以文件名可控。

04 演示

分析到这里,整个漏洞流程基本上已经很清晰了。下面给出本地的演示结果。

php中文网,大量的免费thinkphp入门教程,欢迎在线学习!

标签:Thinkphp6