首页 > 其他分享 >[ACTF2020 新生赛]Include

[ACTF2020 新生赛]Include

时间:2024-10-31 22:46:41浏览次数:1  
标签:协议 ACTF2020 php 文件 新生 flag PHP file Include

链接:https://buuoj.cn/challenges#[ACTF2020 新生赛]Include

打开环境后如下,只有一个 "tips" 的超链接。

访问 tips,留意传入了 "file" 参数。

接下来,可以尝试下路径穿越:?file=flag.php../../../../../etc/passwd

可以看到,存在路径穿越漏洞,但是通过路径穿越漏洞并没有读取到根目录下的 flag 文件。

这时候,回过头去再看访问 tips 时的情况。

可以看到,file 参数被设置为了 "flag.php",因此,有可能 flag 是藏在了 flag.php 文件内,以注释的方式存放着,因此就需要考虑如何能够成功的读取到 flag.php 文件的源码。

下面直接给出 Payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

知其然,知其所以然。

在 PHP 中, 存在着 "伪协议" 这一特性。

即,PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen、copy、file_exists、filesize 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register 函数来注册自定义的封装协议。

总而言之,PHP 伪协议就是用于处理文件的一种协议,比如说在 include 一些文件时,使用各种伪协议就可以特定化的处理该文件或决定如何访问文件、解析文件。

在 PHP 中,支持伪协议的函数有如下:

  • include。
  • include_once。
  • require。
  • require_once。
  • fopen。
  • file。
  • readfile。
  • file_get_contents。
  • ...。

而伪协议的分类有如下:

  • file://。
  • php://。
  • zip://。
  • ...。

其中,"php://" 伪协议用于访问各个输入/输出流。

"php://" 伪协议的条件:

  • allow_url_fopen:off/on。
  • allow_url_include:off/on(php://input、php://stdin、php://memory、php://temp 伪协议需要 on)。

这里着重介绍以下 "php://" 伪协议中的 "php://filter"伪协议。

php://filter 是 PHP 中的一种特殊的伪协议,它允许对数据进行过滤处理。它可以通过输入流或输出流来操作数据,常用于对文件、数据流等进行编码、解码、压缩等处理。

主要用途:

  • 对文件内容进行转换,如 base64 编码、ROT13 加密、字符串大小写转换等。
  • 对 HTTP 请求的输入或输出流进行过滤。

基本的语法:php://filter/read=<过滤器列表>/resource=<操作目标>

因此,本题可以使用 PHP 伪协议读取 "flag.php" 文件源码。

最后,将得到的 Base64 字符串解码后即可得到 flag。

标签:协议,ACTF2020,php,文件,新生,flag,PHP,file,Include
From: https://www.cnblogs.com/imtaieee/p/18519084

相关文章

  • 驰骋工作流:以全面配置,重塑企业流程管理新生态
            在企业数字化转型的浪潮中,工作流系统已成为企业高效运转的核心驱动力。而驰骋工作流,犹如一颗璀璨的明星,凭借其全面的配置项,在众多工作流解决方案中脱颖而出,为企业流程管理带来了前所未有的便捷与高效。一、全面配置:满足企业复杂多样的业务需求       ......
  • 宝塔+DVWA function allow_url_include Disabled错误
    问题描述宝塔配置DVWA出现functionallow_url_include:Disabled错误解决方法查看DVWA文件夹中的php.ini。一般默认是正确的查看网站php环境的配置文件。宝塔默认路径为:/www/server/php/80/etc/php.ini注意,本人网站使用的是php80版本,所以路径中的数字是80,请根据实际......
  • ZZJC新生训练赛第十二场题解
    难度分类(同一难度下按字典序上升)入门:G简单:C,E,A中等:F,D,B困难:HG-解题思路按照题意模拟即可G-代码实现#include<bits/stdc++.h>intmain(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);std::strings;......
  • 基于springboot+vue的Java的新生入学报到系统的设计与实现(源码+lw+部署文档+讲解等)
    课题摘要本课题聚焦于设计和开发一个高效、便捷、准确的基于SpringBoot+Vue的Java新生入学报到系统,以优化新生报到流程,提高学校迎新工作的效率和质量,为新生提供良好的入学体验。该系统涵盖新生信息管理、报到流程管理、宿舍分配管理、缴费管理、迎新通知与指引、数......
  • [ACTF新生赛2020]usualCrypt
    [ACTF新生赛2020]usualCrypt总体分析点进byte_40E0E4函数界面,大概就能猜到解密与base64解密有关了点进sub_401080()函数确实是常见的base64加密但这里有两个自定义函数sub_401000()和sub_401030(a)sub_401000()intsub_401000(){inti;//eaxcharv1;//cl......
  • ZZJC新生训练赛第十场题解
    先给出比赛链接:https://vjudge.net/contest/667035下面说一下难度分层:(同一难度下按字典序排序,数字为cf难度分)800:ABEG1100:D1200:C1400:H1500:F原题链接A:https://codeforces.com/contest/1850/problem/AB:https://codeforces.com/contest/1991/problem/......
  • NSSCTF2024新生赛
    NSSCTF2024新生赛Reverse签到?key加密密文:主加密程序解密脚本:a=[32,39,38,37,44,45,15,34,20,30,33,24,9,223,200,28,231,5,229,226,238,26,230,4,217,201,227,10,245,241,......
  • [ACTF新生赛2020]rome
    DIE查壳32位,无壳32位ida打开界面很难看,按\后得到加密程序关注这个while循环,明明是个循环16次,但却v1却只有四个元素从声明变量这里可以看到v1是int数组,每个元素占四字节梳理一下逻辑,v1是我们需要求的flag,也就是传入的数据,这里通过第一个while循环进行了两次if判断,处理输入......
  • 编程小白如何成为大神?大学新生的最佳入门攻略
    编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱?让我们一起探讨大学新生入门编程的最佳路径,为你的大学生活和未来职业发展打下坚实基础。刚入学的大学新生若想从编......
  • ZZJC新生训练赛第九场题解
    A题思路重点在于题目操作蕴含的奇偶数关系,一个偶数可以和一个奇数一起删除,两个奇数可以一起删除。代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn;cin>>n;vector<int>ar(......