[BSidesCF 2020]Had a bad day1

看到页面有两个按钮

先随便点一个试一下,当我们点击之后发现url是有变动的

感觉url是有点东西的,可能是某种注入,先尝试一下sql注入,发现给出了报错

通过报错我们可以确定是文件包含漏洞,那我们试试php伪协议去读取一下index.php源代码试试,看看能不能通过源码分析出什么(这里有个php伪协议blog003-漏洞梳理篇之php伪协议_伪协议漏洞-CSDN博客)

发现文件多了一个后缀哦(那有可能是直接将文件与后缀名拼接起来),那么把输入的.php删除再来一次

这次返回了base64编码,尝试解密,得到index.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.";}}
?>

可以看到通过category进行get传参,然后category中是需要包含woofers、meowers和index三个中任意一个的,否则就会返回Sorry, we currently only support woofers and meowers.        这里是存在一个php特性,当我们在进行伪协议写入的时候,php会忽略没有含义的值。这样绕过了过滤。从而可以达到读取flag的目的。可以去看一下这篇文章[BSidesCF 2020]Had a bad day_mb5fdcad8719a20的技术博客_51CTO博客

也就是说当我们通过category去传入文件名的时候,category=woofers/flag的时候,index.php会在参数后面直接连接.php这个后缀,因此$file=woofers/flag.php,而在php中进行文件包含的时候会把woofers/给忽略掉,找到这个有意义的flag.php,从而到达利用php伪协议去读取flag.php的目的。

所以可以试着传入category的参数为woofers/flag

可以看到flag.php是被包含进去了但是没有被读取出来,看了别人的博客才知道php伪协议还可以套协议(学到了ovo),这里payload就是利用的这个知识点去构造的

payload:         category=php://filter/convert.base64-encode/woofers/resource=flag

这个伪协议套协议也就是去寻找woofers/flag,而前面说到php会忽略woofers所以这里就可以绕过index.php的过滤,从而读取到flag了

可以看到页面是返回来了一串base64编码,解码就可以得到flag.php的源码,如下

通过解码我们就可以看到源码中的flag了。

今天又学到了哈哈哈  Ovo   ovO OVO ovo 开心的一天       自嗨哈哈哈

参考文章:

003-漏洞梳理篇之php伪协议_伪协议漏洞-CSDN博客

buuctf-[BSidesCF 2020]Had a bad day(小宇特详解)-CSDN博客

[BUUOJ记录] [BSidesCF 2020]Had a bad day - Ye'sBlog - 博客园 (cnblogs.com)

[BSidesCF 2020]Had a bad day_mb5fdcad8719a20的技术博客_51CTO博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保密工作应党而生、伴党而行、为党而兴

1.&#xff08;C &#xff09;工作应党而生、伴党而行、为党而兴&#xff0c;始终是党和国家的一项重要工作。 A. 农业 B. 国防 C. 保密 D. 文化 2.机关、单位对所产生的国家秘密事项&#xff0c;应当按照国家秘密及其密级的具体范围的规定确定密级&#xff0c;同时确定&#x…

JDBC操作数据库的方法

目录 一、JDBC介绍 二、使用方法&#xff08;以MySQL为例&#xff09; &#xff08;1&#xff09;MySQL的jar包&#xff0c;导入到IDEA &#xff08;2&#xff09;使用代码&#xff0c;操作数据库 1&#xff09;设置数据源 1.创建MysqlDataSource对象&#xff0c;使用set…

国产MCU芯片(2):东软MCU概览

前言: 国产芯片替代的一个主战场之一就是mcu,可以说很多国内芯片设计公司都打算或者已经在设计甚至有了一款或多款的量产产品了,这也是国际大背景决定的。过去的家电市场、过去的汽车电子市场,的确国产芯片的身影不是很常见,如今不同了,很多fabless投身这个行业,一种是…

【数据结构】排序(下)

个人主页~ 排序&#xff08;上&#xff09; 栈和队列 排序 二、常见排序的实现8、快速排序的优化9、非递归快速排序&#xff08;1&#xff09;基本思想&#xff08;2&#xff09;代码实现&#xff08;3&#xff09;时间复杂度&#xff08;4&#xff09;空间复杂度 10、归并排序…

一个基于大模型的多功能的本地网页语音合成工具

ChatTTS-ui 是一个开源项目&#xff0c;这是一个利用 ChatTTS 技术将文本转换为语音的本地网页界面工具。它不仅支持中英文和数字的混合输入&#xff0c;还提供了丰富的API接口&#xff0c;为开发者和用户提供了极大的便利。 项目地址&#xff1a;https://github.com/jianchang…

1.华为路由器-三层交换机-二层交换机组网连接

AR1配置GE 0/0/0接口IP [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0] [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei]iP route-static 192.168.0.0 16 1.1.1.2三层交换机配置如下 创建vlan [Huawei]vlan batch 10 20配置接口ip [Huawei]int g0/0/1 [Huawei…

git diff 命令

目录标题 [Q&A] git diff 作用常见用法比较工作目录与暂存区比较暂存区与最近一次提交比较工作目录与最近一次提交比较两个具体的提交之间差异 [Q&A] git diff 作用 git diff 用于展示不同版本之间文件内容的变化。 常见用法 比较工作目录与暂存区 显示工作目录中尚…

API接口设计的18条规范

API接口设计的18条规范 签名 目的&#xff1a;防止数据被篡改 实现方法&#xff1a; 接口请求方将请求参数、时间戳和密钥拼接成一个字符串使用MD5等hash算法生成签名sign在请求参数或请求头中增加sign参数&#xff0c;传递给API接口API接口网关服务验证传递的sign值&#…

数电逻辑门电路分析和Digital仿真

文章目录 1. 逻辑门电路 2. 非门&#xff08;NOT Gate&#xff09; 3. 与门&#xff08;AND Gate&#xff09; 4. 或门&#xff08;OR Gate&#xff09; 5. 与非门&#xff08;NAND Gate&#xff09; 6. 或非门&#xff08;NOR Gate&#xff09; 7. 异或门&#xff08;XO…

pinocchio计算MPC控制状态方程AB矩阵

pinocchio计算MPC控制状态方程AB矩阵 Pinocchio是一个用于机器人动力学和运动学计算的库,广泛应用于机器人控制和仿真中。为了在MPC控制中使用Pinocchio计算状态方程的线性化矩阵 A 和 B,需要以下步骤: 1、初始化机器人模型和数据结构: 使用Pinocchio加载机器人模型。初始…

开源模型应用落地-LangChain高阶-LCEL-表达式语言(七)

一、前言 尽管现在的大语言模型已经非常强大&#xff0c;可以解决许多问题&#xff0c;但在处理复杂情况时&#xff0c;仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而&#xff0c;现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么&…

每天五分钟深度学习框架pytorch:多维tensor向量在某一维度的拼接和分割

本文重点 在深度学习中,我们常常需要完成多个向量拼接,同时也要完成向量的分割,在pytorch中已经有封装好的库,我们可以直接调用完成这部分任务。 Cat拼接 c=torch.cat([a,b],dim=0)表示将a和b按0维度进行拼接,需要注意再非dim维度,两个矩阵的维度必须是一致的,不然会拼…

单调栈(续)、由斐波那契数列讲述矩阵快速降幂技巧

在这里先接上一篇文章单调栈&#xff0c;这里还有单调栈的一道题 题目一&#xff08;单调栈续&#xff09; 给定一个数组arr&#xff0c; 返回所有子数组最小值的累加和 就是一个数组&#xff0c;有很多的子数组&#xff0c;每个数组肯定有一个最小值&#xff0c;要把所有子…

Caffe、PyTorch、Scikit-learn、Spark MLlib 和 TensorFlowOnSpark 概述

在 AI 框架方面,有几种工具可用于图像分类、视觉和语音等任务。有些很受欢迎,如 PyTorch 和 Caffe,而另一些则更受限制。以下是四种流行的 AI 工具的亮点。 Caffee Caffee是贾扬青在加州大学伯克利分校(UC Berkeley)时开发的深度学习框架。该工具可用于图像分类、语音和…

MySQL中的复合查询与表的内外连接解析

在MySQL中&#xff0c;复合查询通常指的是涉及多个表或多个查询条件的查询。而表的内外连接&#xff08;INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN&#xff0c;但MySQL不直接支持FULL OUTER JOIN&#xff09;则是复合查询中常用的连接技术&#xff0c;用于从多个表…

【websocket】怎么终止websocket断开重连

介绍 代码是用go语言实现的。go语言实现websocket&#xff0c;常用第三方库github.com/gorilla/websocket。 不过只要明白了思路&#xff0c;不管哪个语言实现起来都是一样的。 问题 在生产环境&#xff0c;websocket客户端一般都会实现断开重连的逻辑&#xff0c;如果直接…

胡说八道(24.6.12)——数字电子技术以及Modelsim

上回书说到数电中的最常用的表达式——逻辑表达式(由布尔代数组成)以及常用的两种图表——真值表(真值表表示的是所有的输入可能的线性组合以及输出)和卡诺图(卡诺图则是一种化简工具&#xff0c;排除冗余项&#xff0c;合并可合并项)。 今天&#xff0c;先来看看昨天说的基本逻…

DP:01背包问题

一、背包问题的概述 背包问题是⼀种组合优化的NP完全问题。 本质上是为了找出“带有限制条件的组合最优解” 1、根据物品的个数&#xff0c;分为如下几类&#xff1a; • 01背包问题&#xff1a;每个物品只有⼀个&#xff08;重点掌握&#xff09;• 完全背包问题&#xff1…

ffmpeg封装和解封装介绍-(10)综合完成视频重编码为h265,解封装解码编码再封装

主函数逐句解析&#xff1a; 由于代码太多我们只解析主函数&#xff0c;&#xff08;其他封装函数见前面文章&#xff0c;同时用到了解码编码封装代码&#xff09;。 初始化和参数处理 int main(int argc, char* argv[]) {/// 输入参数处理string useage "124_test_x…

【计算机网络】已解决:“‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错

文章目录 一、问题分析背景二、可能出错的原因三、错误代码示例四、正确解决方法与示例五、注意事项 已解决“‘ping’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件”报错 一、问题分析背景 在Windows操作系统中&#xff0c;ping 命令是一个常用的网络诊断…