php伪协议 [SWPUCTF 2022 新生赛]ez_ez_php(revenge)

2024-02-27 07:12

本文主要是介绍php伪协议 [SWPUCTF 2022 新生赛]ez_ez_php(revenge),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

打开题目

题目源代码如下

 <?php
error_reporting(0);
if (isset($_GET['file'])) {if ( substr($_GET["file"], 0, 3) === "php" ) {echo "Nice!!!";include($_GET["file"]);} else {echo "Hacker!!";}
}else {highlight_file(__FILE__);
}
//flag.php

代码审计一下

首先检查是否存在名为 file 的 GET 参数

如果存在 file 参数,就用substr函数检查该参数值的前三个字符是否为 "php"

  • 如果是的话,代码会输出 "Nice!!!",然后通过 include 函数包含该参数所指定的文件。
  • 如果不是以 "php" 开头,代码会输出 "Hacker!!"
  • 如果 file 参数不存在,则会显示当前文件的源代码。

很明显这里用php伪协议即可读取flag

payload

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

解码得到

得到提示

把payload换成

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

解码即可得到flag

NSSCTF{7877cb1d-5672-4cc9-946a-d69f3c5d2640}

知识点:

subsub函数

substr(string,start<,length>)

主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度

从string 的start位置开始提取字符串,length:待提取的字符串的长度

若length为以下情况时,返回整个字符串的所有字符

1、length不指定
2、length为空
3、length为负值
4、length大于字符串的长度

具体用法见:C++中substr()函数用法详解_substr c++-CSDN博客

这篇关于php伪协议 [SWPUCTF 2022 新生赛]ez_ez_php(revenge)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751584

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优