web:[ZJCTF 2019]NiZhuanSiWei1

题目

点进题目,网页显示如下,需要代码审计

  • $_GET["text"]$_GET["file"]来获取传入的两个参数textfile
  • 使用isset()函数来检查$text变量是否已设置并且不为null。如果设置了并且不为null,则执行下面的逻辑。
  • 在下面的逻辑中,脚本使用file_get_contents()函数读取$text指定的文件内容,并将其与字符串"welcome to the zjctf"进行比较。如果相等,则输出文件内容并继续执行下面的逻辑。
  • preg_match()函数来检查$file变量中是否包含字符串"flag"。如果包含,则输出Not now!并退出脚本。否则,继续执行下面的逻辑。
  • 使用include()函数来包含$file指定的文件(useless.php)。然后,使用unserialize()函数对$password进行反序列化,并将结果赋值给$password变量。最后,输出$password的值。
  • 如果在步骤2中检查到$text变量未设置或为null,或者在步骤3中文件内容不等于"welcome to the zjctf",则输出脚本本身的源代码。

file_get_contents是得读取到文件里的内容,而$text是一个变量,file_get_contents不能读取一个变量,所以必须让变量伪装成一个文件,就得使用php伪协议中的 data://协议,就是把字符串包装成一个文件来执行

在代码页面发现了useless.php,访问过后什么都没有空白一片

判断可能需要php://filter读取,通过以上判断需要php伪协议

先使用data://协议匹配第一个内容,则payload为

text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=

if(preg_match("/flag/",$file))

这里限制了file=flag.php

但是下面还提示了一个useless.php,则payload为

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

还要加上上一个的payload

显示如下,base64解码即可

解码后显示如下

根据上述信息,构造一个代码


<?phpclass Flag{  public $file='flag.php';}$a=new Flag;echo serialize($a) ;
?>

据题目给的代码,需要将代码序列化之后,会赋值给password,password会被反序列化成原来的代码再赋值给password,然后echo $password,这里构造的php代码(file)就是一个类,通过base64解码之后得到代码中_tostring这个函数,在类被echo会被调用,就相当于echo 了一个类,就会触发到我们写的代码里的tostring

所以构造payload为

password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

加上之前的payload

text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

查看源代码

参考文章链接:

[ZJCTF 2019]NiZhuanSiWei 1-CSDN博客

[ZJCTF 2019]NiZhuanSiWei1 详解_[zjctf 2019]nizhuansiwei 1-CSDN博客

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

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

相关文章

贪心算法(新坑)

贪心入门 概述&#xff1a; 贪心算法是一种在每一步选择中都采取当前最优解的策略&#xff0c;希望最终能够得到全局最优解的算法。简单来说&#xff0c;它会不断地做出局部最优的选择&#xff0c;相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…

CCFCSP试题编号:202206-2试题名称:寻宝!大冒险!

一、题目 二、分析 因为藏宝图左下角位置一定是一棵树&#xff0c;所以只要把所有绿化图中每一棵树&#xff0c;与之相匹配&#xff0c;然后判断&#xff0c;是否整个藏宝图都是绿化图的一部分&#xff0c;如果是那就计数count1。所以来看&#xff0c;结果count最大也就是n(绿…

进程和线程的关系

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 进程&线程 1. 什么是进程PCB 2. 什么是…

高等数学零基础篇复习笔记

预备章 零基础高等数学入门知识 第一节 集合、运算与关系 第二节 三角函数与反三角函数 三角函数的公式 反三角函数 第三节 常见不等式及数列 划重点 第一章 函数、极限与连续 第一节 函数及函数的初等特性 特殊函数 反函数 函数的初等特性 ①有界性 ②奇偶性 偶函数图像…

高中生分科考试--座位编排系统

这个系统是帮我一同学的哥哥的做的座位编排系统&#xff0c;他是某个学校的教育从事者 基本需求&#xff1a;就是能够根据他提供的各个分科班级同学的成绩单来选择相同分科的考场编排&#xff08;按成绩高低&#xff09;&#xff0c;同时输入相应的考场数&#xff0c;和每个考…

解决git action发布报错:Input required and not supplied: upload_url

现象&#xff1a; 这个问题死活都找不到原因&#xff0c;后来打了一段调试的代码 - name: Debug Create Release Output run: | echo "Release ID: ${{ env.RELEASE_ID }}" echo "Release Upload URL: ${{ env.RELEASE_UPLOAD_URL }}" env: RELEASE_ID: ${…

docker镜像原理

什么是镜像 容器解决应用开发、测试和部署的问题&#xff0c;而镜像解决应用部署环境问题。镜像是一个只读的容器模板&#xff0c; 打包了应用程序和应用程序所依赖的文件系统以及启动容器的配置文件&#xff0c;是启动容器的基础。镜像所打 包的文件内容就是容器的系统运行环…

C++初阶--String类的使用

string类 在C语言中&#xff0c;我们总是用char* 的类型来创建一个变量&#xff0c;存储一个字符串&#xff1b;当我们想对它进行修改或者读写时&#xff0c;需要自我创建空间和使用string.h的库函数来进行操作它&#xff1b; 而在C中&#xff0c;C专门提供了一个头文件 stri…

028 - STM32学习笔记 - ADC(二) 独立模式单通道中断采集

028 - STM32学习笔记 - 结构体学习&#xff08;二&#xff09; 上节对ADC基础知识进行了学习&#xff0c;这节在了解一下ADC相关的结构体。 一、ADC初始化结构体 在标准库函数中基本上对于外设都有一个初始化结构体xx_InitTypeDef&#xff08;其中xx为外设名&#xff0c;例如…

智能优化算法应用:基于阴阳对算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于阴阳对算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于阴阳对算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.阴阳对算法4.实验参数设定5.算法结果6.参考文献7.…

《2023全球隐私计算报告》正式发布!

2023全球隐私计算报告 1、2023全球隐私计算图谱2、国内外隐私计算相关政策3、隐私计算技术的最新发展4、隐私计算技术的合规挑战5、隐私计算的应用市场动态6、隐私计算开源整体趋势7、隐私计算的未来趋势 11月23日&#xff0c;由浙江省人民政府、商务部共同主办&#xff0c;杭州…

智慧化工~工厂设备检修和保全信息化智能化机制流程

化工厂每年需要现场检修很多机器&#xff0c;比如泵、压缩机、管道、塔等等&#xff0c;现场检查人员都是使用照相机&#xff0c;现场拍完很多机器后&#xff0c;回办公室整理乱糟糟的照片&#xff0c;但是经常照了之后无法分辨是哪台设备&#xff0c;而且现场经常漏拍&#xf…

淘宝平台商品详情平台订单接入说明

一 文档说明 本文档面向对象为电商平台商品详情数据和订单进行管理的第三方开发者或自研商家 二 支持范围 目前API已经支持订单的接单、取消、退单处理等操作。如果您的订单管理需求现有API不能满足&#xff0c;可以联系我们提出API需求。 参数说明 通用参数说明 参数不要乱…

振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(8)

注解目录 1、znFAT 的起源 1.1 源于论坛 &#xff08;那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。&#xff09; 1.2 硬盘 MP3 推了我一把 &#xff08;“坤哥”的硬盘 MP3 播放器&#xff0c;让我深陷 FAT 文件系统不能自拔。&#xff09; 1.3 我…

【数据结构】八大排序(二)

目录 前言&#xff1a; 冒泡排序 冒泡排序代码实现 冒泡排序特性总结 快速排序 单趟排序hoare版本 单趟排序挖坑法 单趟排序快慢指针法 快速排序整体概览 快排的优化 三数取中法选key 小区间优化 前言&#xff1a; 上文介绍了直接插入排序&#xff0c;希尔排序&…

vue3怎么提升效率的?为什么vue3比vue2快?效率提升主要在哪些方面?

官方文档中说vue3在 客户端渲染效率比vue2提升了1.3~2倍&#xff0c; SSR渲染效率比vue2提升了2~3倍&#xff0c;那么究竟是怎么提升的呢&#xff1f; 一、静态提升 在 vue3项目中的package.json文件中&#xff0c;可以看到这个 vue/compiler-sfc&#xff0c;它是用来解析(.v…

【Java Spring】SpringBoot常用插件

文章目录 1、Lombok1.1 IDEA社区版安装Lombok1.2 IDEA专业版安装Lombok1.3 Lombok的基本使用 2、EditStarters2.1 IDEA安装EditStarters2.2 EditStarters基本使用方法 1、Lombok 是简化Java开发的一个必要工具&#xff0c;lombok的原理是编译过程中将lombok的注解给去掉并翻译…

电力感知边缘计算技术网关产品设计方案-硬件方案

网关硬件架构设计图: 1.配置方案 配置差异 A类网关 B类网关 CPU

写一个宏,交换整数二进制位的奇数位和偶数位,并打印这个新的数

我们已经学过了C语言的宏&#xff0c;我们今天应用宏来交换一个整数的二进制的奇数位和偶数位&#xff0c;并得到这个被交换过的数&#xff0c;我们开始吧&#xff01; 1.问题分析 解题方法&#xff1a;& 和<< 和>>操作符 问题解析&#xff1a;我们这里假设一个…

这才是BI大数据分析工具的正确打开方式!

这两年经济下行给各行各业造成不小的发展困扰&#xff0c;为此企业积极自救&#xff0c;希望通过数字化降本增效&#xff0c;提高业绩水平。BI大数据分析工具就是企业数字化转型中常用到的一种商业智能BI工具&#xff0c;主要作用是缩短数据分析时间&#xff0c;提升企业数据分…