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

攻防世界 - Web - Level 1 | file_include

关注这个靶场的其它相关笔记:攻防世界(XCTF) —— 靶场笔记合集-CSDN博客

0x01:Write UP

本题考察的是 PHP 的文件包含漏洞,一般 CTF 的文件包含漏洞考点都是 PHP 伪协议。题目透露出来的代码比较 Easy:

 <?php  
 highlight_file(__FILE__);  
     include("./check.php");  
     if(isset($_GET['filename'])){        
         $filename  = $_GET['filename'];  
         include($filename);  
     }  
 ?>

它包含了一个 check.php 估计是对用户传入值进行一个检查的文件,然后就是直接进行文件包含了。

依据 CTF 的尿性,Flag 一般都是藏在 flag.xxx 文件中的,当然不乏改名的。我们在进行文件包含之前,先定位一下 Flag 文件的位置(这里可以使用工具扫,但笔者觉得没必要)。

直接访问 /flag.php 文件,结果返回为空(因为不是 404,证明确实存在该文件):

下面我们就是尝试进行文件包含,直接包含 flag.php 的话,内容肯定会和我们直接访问一样,显示为空,所以我们需要对 flag.php 内容进行编码后再进行包含。

本关考察的 PHP 伪协议是 php://filter,使用的过滤器是 convert.iconv.*,你可以理解为使用 iconv() 函数处理所有的输入输出流。convert.iconv.* 过滤器使用方法有如下两种:

 convert.iconv.<input-encoding>.<output-encoding>
 or 
 convert.iconv.<input-encoding>/<output-encoding>

其中 <input-encoding><output-encoding>就是编码的方式,PHP 支持的字符编码可以从 PHP 官网获取,链接如下(笔者已经收集好了做成字典了):

PHP: Supported Character Encodings - Manual https://www.php.net/manual/en/mbstring.supported-encodings.php

过关的 Payload 模板如下:

 ?filename=php://filter/convert.iconv.<input-encoding>.<output-encoding>/resource=flag.php

首先请求上面的 Payload 模板,并使用 BurpSuite 进行抓包,然后将 PHP 支持的字符编码作为参数替换 <input-encoding><output-encoding> 的内容:

配置完成后,开始爆破,然后按照返回包的长度进行排序,我们可以很快得到一个可用的 Payload:

 ?filename=php://filter/convert.iconv.CP1252.UTF-32%2a/resource=flag.php

0x02:参考资料

详解php://filter以及死亡绕过_filter绕过过滤-CSDN博客文章浏览阅读1.6w次,点赞49次,收藏274次。详解php://filter以及死亡绕过php://filterPHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。php:// — 访问各个输入/输出流(I/O streams)php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_ge_filter绕过过滤https://blog.csdn.net/woshilnp/article/details/117266628
php伪协议实现命令执行,任意文件读取_ctf php文件读取-CSDN博客该文章介绍了PHP伪协议中的file://和php://协议,以及利用data://协议实现了任意文件读取和命令执行的方法。文章还提供了具体的使用示例和注意事项。https://blog.csdn.net/qq_44418229/article/details/125197168

http://www.kler.cn/a/429861.html

相关文章:

  • js:正则表达式
  • 操作系统之磁盘
  • el-table 合并单元格
  • fitz获取pdf内容
  • springboot的restTemplate发起get请求参数到服务端无法被解析,curl或postman可以正常调用的url。
  • 【JavaWeb后端学习笔记】Spring事务管理
  • ISO45001职业健康安全管理体系涵盖了丰富的内容
  • 【计网笔记】习题
  • 调度系统:使用 Apache Airflow 管理和调度 Couchbase SQL 脚本的实际例子
  • C++ 游戏开发与小程序:跨平台开发与智能化游戏体验的结合
  • SpringBoot | 拦截器 | 统一数据返回格式 | 统一异常处理 | 适配器模式
  • 链式设计模式:装饰模式,职责链模式
  • 一根网线如何用软路由给手机、电脑分配设置不同IP
  • 从watch、watchEffect、useEffect原理到vue、react响应原理
  • keepalived 各模式设置
  • 实时数据开发|Flink状态计算 有状态VS无状态,区别和优劣
  • NanoLog起步笔记-7-log解压过程初探
  • 什么是反向代理?作用、原理和实例详解
  • 反向代理-缓存篇
  • ubuntu22.04 使用可以用的镜像源获取你要的镜像
  • 数据结构与算法学习笔记----树与图的深度优先遍历
  • MACOS M1/M2芯片 Homebrew 安装教程
  • FastAPI解决跨域报错net::ERR_FAILED 200 (OK)
  • REDMI瞄准游戏赛道,推出小屏平板