ctfshow学习记录-web入门-文件包含-web78

#解决方法#

include包含,直接用伪协议就可以。

 ?file=php://filter/convert.base64-encode/resource=flag.php

我所能理解的是include()函数是会执行我们所上传的文件名(这里的文件名一定是该网页后台所有的,我们上传该文件名直接被赋值了,就是一个空壳子被塞了东西,然后执行),但是我们不需要执行该文件,我们只要该文件的源代码就行,所有怎么让他只读取而不执行呢?那就是要用到“highlight_file(__FILE__);”我们被赋值后直接进行base64加密,而include()函数无法执行base64加密后的东西,他就报错,而这时highlight_file(__FILE__)就会返回改赋值文件名的源代码!

filter:过滤

convert:转变

encode:编码

resourece:资源

#理解#

  1. if(isset($_GET['file'])){
    这行代码检查$_GET['file']是否已经设置。$_GET是PHP中用于获取GET请求参数的数组。isset()函数用来检查变量是否已设置并且非NULL。

  2. $file = $_GET['file'];
    如果$_GET['file']存在,这行代码将其值赋给变量$file。这意味着用户可以通过URL传递一个名为file的参数来指定一个文件名。

  3. include($file);
    这行代码使用include语句来包含并执行变量$file中指定的文件。这可能导致执行任意代码,如果用户能够控制$file的值。

  4. }else{
    这是一个else语句,与上面的if语句配对。如果$_GET['file']没有被设置,那么将执行else块中的代码。

  5. highlight_file(__FILE__);
    这行代码调用highlight_file()函数,它输出当前文件的源代码,并使用HTML格式化和颜色高亮显示。__FILE__是一个魔术常量,它返回当前文件的完整路径。

#大白话#

  1. 检查用户请求:首先,这段代码是在检查用户通过网址发送过来的一个叫file的东西。你可以把file想象成一个指向某个文件的名字或路径。

  2. 包含文件:如果用户确实发送了file这个信息,PHP代码就会把这个信息存储到变量$file里。然后,它会尝试找到这个文件,并且包含(或者说“执行”)里面的内容。这就好比你告诉电脑:“嘿,去书架上找到这本书,然后读给我听。”

  3. 没有请求怎么办:但是,如果用户没有发送file这个信息,PHP代码就会执行另一套操作。它会显示当前这个PHP文件的内容。这有点像,如果没人告诉你要拿哪本书,它就会说:“好吧,那我就读读我自己的说明书给你听。”

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值