首页 > 其他分享 >[SWPUCTF 2021 新生赛]PseudoProtocols

[SWPUCTF 2021 新生赛]PseudoProtocols

时间:2024-02-29 16:02:13浏览次数:30  
标签:文件 读取 SWPUCTF base64 filter 参数 2021 PseudoProtocols php

[SWPUCTF 2021 新生赛]PseudoProtocols

尝试直接访问hint.php,发现并没有效果

联想到题目为PseudoProtocols(伪协议),尝试使用伪协议

php://filter参数详解

该协议的参数会在该协议路径上进行传递,多个参数都可以在一个路径上传递。具体参考如下:

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

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。利用filter协议读文件,例如将index.php通过base64编码后进行输出。这样做的好处就是如果不进行编码,文件包含后就不会有输出结果,而是当做php文件执行了,而通过编码后则可以读取文件源码。

示例:php://filter/read=convert.base64-encode/resource=[文件名]读取文件源码(针对php文件需要base64编码)

其中使用的convert.base64-encode,起到过滤作用。

尝试使用http://node4.anna.nssctf.cn:28736/index.php?wllm=php://filter/read=convert.base64-encode/resource=hint.php得到经过base64编码后的hint.php源码

成功获取

将源码进行base64解码

提示进入test2222222222222.php

修改url,访问test2222222222222.php

观察代码功能:

  1. isset($a): 这个函数检查变量$a是否已设置且不为null。
  2. file_get_contents($a,'r'): 这个函数尝试从由$a指定的文件路径中读取文件内容。第二个参数'r'是模式,表示“读取模式”。
  3. === : 这部分检查从文件中读取的内容是否严格等于字符串'I want flag'

file_get_contents() 把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

语法

file_get_contents(path,include_path,context,start,max_length)

参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 '1'。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

此处的关键在于$a如何以文件的形式存放'I want flag',联想到另一个PHP伪协议

data://协议

  • 条件

    • allow_url_fopen:on
    • allow_url_include :on
  • 作用:自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

  • 用法

    data://text/plain,
    data://text/plain;base64,xxxx  (如果此处对某些字符进行了过滤,可以通过base64编码后再输入)
    

最终构造payload为:

http://node4.anna.nssctf.cn:28736/test2222222222222.php?a=data://text/plain,I want flag

得到flag

NSSCTF{c1783960-8b0c-4bc6-ac17-13a5f2d6a887}

标签:文件,读取,SWPUCTF,base64,filter,参数,2021,PseudoProtocols,php
From: https://www.cnblogs.com/evo-lution/p/18043425

相关文章

  • The 2021 CCPC Weihai Onsite
    目录写在前面AJDGEMH写在最后写在前面比赛地址:https://codeforces.com/gym/103428。以下按个人向难度排序。最杂鱼的一集,vp时1h过了三题就开始坐牢了。妈的怎么这么多数学题,不会数学的飞舞被杀死了、、、A签到。有度数大于等于4的点则不合法,否则任选度数不大于2的......
  • 【李宏毅机器学习2021】(二)Tips for training
    这一节主要讲解机器学习、类神经网络训练不起来怎么办?讲解一些训练的tips。先来回顾下机器学习的步骤:接下来将介绍在机器学习过程中,遇到问题时如何判断原因并解决:在训练数据上Loss值很大ModelBias在训练数据上Loss值很大,有可能是发生了Model问题。问题原因:模型太......
  • 【李宏毅机器学习2021】(一)引入机器学习和深度学习
    引入机器学习MachineLearning概括来说就是LookingforFunction,即让机器具备找一个函数的能力这些函数显然非常复杂,要依靠机器自动找出该函数。随着要找的函数不同,机器学习有不同的类别:Regression,回归:函数输出的是数值。Classification,分类:函数从给定选项(类别)中选择一个......
  • SWPUCTF _pop
    POP题目代码:<?phperror_reporting(0);show_source("index.php");classw44m{private$admin='aaa';protected$passwd='123456';publicfunctionGetflag(){if($this->admin==='w44m'&am......
  • [陇剑杯 2021]webshell
    追踪流进行解题第一题:黑客登录系统使用的密码是Admin123!@#在第6个流的时候可以发现login的页面和有相关的信息,复制进行解码得到结果或者在搜索栏里用POST规则搜索,因为密码登录的规则一般是POST方式  第二题:黑客修改了一个日志文件,文件的绝对路径为/var/www/html/data......
  • [SWPUCTF 2021 新生赛]ez_unserialize
    概括这是一道PHP反序列化的CTF赛题,本意是想用这道题对PHP反序列化进行一定的学习。过程我们打开赛题,看看内容 没有发现什么东西,看看他的页面代码  根据他的提示,感觉是存在一个robots.txt文件的,尝试访问一下。 进去看看。 果然如此我们来分析一下这段代码<......
  • 微软 Office 2021 专业增强版,安装完自动激活
    123盘下载地址  MicrosoftOffice2021VL官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘(123pan.com)安装前先关闭windows系统自带的 病毒  微软办公软件套件MicrosoftOfficeLTSC2021专业增强版2024年01月批量许可版更新推送!Office2021正式版和Windows11......
  • 2021/1/14
    可以看出,for循环是将字符串的内容:依次取出所以,for循环也被称之为:遍历循环 同while循环不同,for循环是无法定义循环条件的只能从被处理的数据集中,依次取出内容进行处理所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大 range语句语法1:range(nu......
  • P9847 [ICPC2021 Nanjing R] Crystalfly
    前景导入当\(t\in[1,2]\)时,本题如何求解?答:树形dp设\(f[i]\)为以\(i\)为根的树,根节点的晶蝶已消散且儿子节点的晶蝶还未被惊动,能获得的最大晶蝶数。则有状态转移方程\(f[i]=(\sumf[u])+max(a[u])\),其中\(u\)为\(i\)的儿子。最终的答案即为\(f[1]+a[1]\)划向更......
  • 2021年全年回顾
    书接2020年全年回顾,在2020年11月,领导安排投入新的业务。由于业务调整,部门原有的业务都交接出去,因此迫切需要寻找新的方向。部门领导设计了几个方向,我参与的是其中一个,目标打造新的实时3D渲染产品,业界的竞品包括Unreal、Unity等。部门有同事一定投入,收集了资料供部门内同事学习,......