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

[ACTF2020 新生赛]Include

时间:2023-07-16 12:45:27浏览次数:38  
标签:协议 ACTF2020 php string base64 新生 flag PHP Include

[ACTF2020 新生赛]Include

题目来源:buuctf

题目类型:web

涉及考点:文件包含、任意文件读取

1. 题目给了个跳转链接 tips ,点击进入:

题目提示存在文件包含漏洞,接下来尝试获取flag.php的源码

2. PHP伪协议

这里需要先介绍一下php伪协议,方便我们做题。

PHP 伪协议是 PHP 支持的协议与封装协议,常见的几个伪协议如下:

伪协议 功能
file:// 访问本地文件系统
http:// 访问 HTTP(s) 网址
php:// 访问各个输入/输出流
phar:// PHP 归档
zip:// 压缩流

这次我们主要介绍php://filter ,这是一个php协议,可以作为一个中间件来处理其他流。简单理解就是,它是一个中转站,可以将获取到的流进行过滤,再将其输出。(类比于食品加工,原材料是输入流,最终产品是输出流,整个加工过程就是中转站)

它有以下几个参数:

名称 描述 备注
resource=<要过滤的数据流> 指定了要筛选过滤的数据流 必选
read=<读链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(|)分隔 可选
write=<写链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(|)分隔 可选
<;两个链的筛选列表> 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链

下面介绍几个常见的过滤器:

名称 功能
string.rot13 一种字符处理方式,字符右移十三位
string.toupper 将所有字符转换为大写
string.tolower 将所有字符转换为小写
string.strip_tags 用来处理掉读入的所有标签,例如XML的等等
convert.base64-encode & convert.base64-decode base64加密解密

3. 回到题目,现在尝试构造payload

我们现在需要得到 flag.php 的源码,通过php伪协议我们可以构造如下:

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

这一步是对 flag.php 进行base64编码。如果不进行过滤操作,读取的数据会被当做php代码执行,那么获取的结果就跟第一步一样了。

将payload上传,得到源码的base64编码:

我们对其进行解码,得到flag:

flag{eb11b5f2-4e76-46a9-a715-7c80b04e6839}

日期:2023.7.16

作者:y0Zero

标签:协议,ACTF2020,php,string,base64,新生,flag,PHP,Include
From: https://www.cnblogs.com/bkofyZ/p/17557699.html

相关文章

  • [HUBUCTF 2022 新生赛]simple_RE
    [HUBUCTF2022新生赛]simple_RE查壳,64位找main函数,F5查看伪代码,简单分析一下int__cdeclmain(intargc,constchar**argv,constchar**envp){intv4;//[rsp+24h][rbp-44h]BYREFvoid*Buf1;//[rsp+28h][rbp-40h]BYREFcharv6[56];//[rsp+30h][rbp......
  • ChatGPT 问答00003 mysql中删除原来的自增ID,并重新根据字符串字段data字段排序重新生
    在MySQL中,自增ID是由MySQL引擎自动生成和维护的,通常与数据表的主键关联。删除自增ID并重新生成的需求比较特殊,因为自增ID的生成是基于数据表中已有的记录顺序的,直接删除和重新生成可能会破坏数据完整性和索引等方面的约束。不建议直接删除和重新生成自增ID,但你可以通过以下步骤实......
  • 从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生
    摘要:随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择。本文分享自华为云社区《从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生》,作者:华为云头条。数据驱动着现代商业的发展今天,无论在制造、零售、物流还是在互联网、金融等行业......
  • 特别呈现|腾讯云 X K+ 峰会共同打造软件工程新生态
    近日,K+全球软件研发行业创新峰会在上海成功举办。会上,峰会钻石合作伙伴腾讯云倍受瞩目。其参会展台人潮涌动,演讲内容也深受关注和好评。腾讯云是腾讯集团倾力打造的云计算品牌。作为腾讯云的重要产品线之一,腾讯云CODING涵盖一站式研发管理平台及云原生工具,为互联网、金融、政......
  • reeuqire与include的区别
    include和 require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和 include_once又有什么区别? 二者区别只有一个,那就是对包含文件的需求程度,include就是包含,如果被包含的文件不存在的话,那么则会提示一个错误,但是程序会继续执行下去。 而require意思......
  • js-关于数组中includes()的使用方法
    关于数组中includes()的使用方法1.includes简单介绍说明 1.includes()方法是用来判断一个数组是否包含一个指定的值,返回一个布尔值,如果是返回true,否则false。2.其中,includes(a,b)括号里第一个参数a为必选参数,表示要查找的某个参数;第二位b为可选参数,表示从某个索引位置开始......
  • C#操作Word模板文件 替换并重新生成
    这里用到了一个操作Word的第三方开源库:DocX;这个库对于操作Word文件绝对是个好东西,更优于NPOI,而且也是不依赖于Office的;   核心代码///<summary>///Word模板替换///<para>当前适用的字段模板形如:[=Name],其中Name就是字段名</para>......
  • [SWPUCTF 2022 新生赛]file_master wp
    前置知识点:这个题目的有一点之前是没有看见过的,就是对图片的宽和高进行了一些限制,限制都小于20才能上传成功看了别人的wp说是可以直接定义#defineheight1#definewidth1就是上面的只要把后面的数字改成小于20的就可以了(20是题目要求的,imagehightandwidthmustl......
  • 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
    在Java虚拟机中,主要存在两个代(Generation)的垃圾回收器:新生代(YoungGeneration)垃圾回收器和老年代(OldGeneration)垃圾回收器。它们的作用和区别如下:新生代垃圾回收器:新生代是存放新创建的对象的内存区域,一般占整个堆内存的较小部分。新生代垃圾回收器主要负责回收新生代内存区域中的......
  • Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
     001、问题cmake报错[root@PC1build]#cmake.. 002、解决方法,下载zlib并安装官网:http://www.zlib.net/a、下载 b、解压并安装[root@PC1software]#tar-xzvfzlib-1.2.13.tar.gz[root@PC1software]#cdzlib-1.2.13/[[email protected]]#./configur......