CTF-Web习题:[BJDCTF2020]ZJCTF,不过如此

题目链接:[BJDCTF2020]ZJCTF,不过如此

解题思路

访问靶场链接,出现的是一段php源码,接下来做一下代码审阅,发现这是一道涉及文件包含的题
在这里插入图片描述
主要PHP代码语义:

file_get_contents($text,'r');$text变量所制定的文件读入一个字符串中
'r'表示只读preg_match("/flag/",$file);
正则表达式,判断文件中是否包含"flag"字符串include($file);
文件包含函数,如果文件中是普通字符串,则输出
如果有php代码,则会执行

通过代码审计,发现我们可以将text设置为I have a dream,来进入循环,并利用伪协议读取并加密next.php文件源码,利用include函数输出从而得到next.php文件源码。

接下来尝试从url中设置text=I have a dream,试图通过get赋值,但无果,因为这样会变成将text变量的值赋为I have a dream。我们的目的是使text这个变量所制定的文件中写入I have a dream,进而通过比较判断语句,此时就要想想办法,怎么做到?

利用PHP中的伪协议可以做到:
1、php://input :php中的特殊输入流,用于读取POST中的值
在这里插入图片描述

2、data:///变量名/plain,明文:php中的数据传输协议,与php://input类似,将plain后的明文或是Base64密文传入字符串
在这里插入图片描述
Base64密文语法:?text=data://text/plain;base64,密文

以上两种方法都能够通过比较。此处涉及PHP伪协议知识,详见:CTF文件包含教程

回到源码,通过比较语句后,下一步就是利用include函数得到next.php文件源码了,我们可以用php://filter/协议来读取源码:

php://filter/read=convert.Base64-encode/resource=next.php
其中:
php://filter表示php过滤器
/read后面跟上要使用的过滤器,这里的convert.Base64-encode就是调用Base64过滤器对文件内容进行编码
/resource后面是输入的文件名

构造好的url如上文所示,访问即可得到密文,解码后得到next.php源码:

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;function complex($re, $str) {return preg_replace('/(' . $re . ')/ei','strtolower("\\1")',$str);
}foreach($_GET as $re => $str) {echo complex($re, $str). "\n";
}function getFlag(){@eval($_GET['cmd']);
}

至此先告一段落,主要掌握文件包含漏洞知识点,详见:文件包含详解,后续知识点还未学习,待学习后继续解析。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

One-Class SVM

前提知识&#xff1a;支持向量机&#xff08;SVM&#xff09;-CSDN博客 主要思想 找一个超平面将样本中的正例圈出来&#xff0c;预测就是用这个超平面做决策&#xff0c;在圈内的样本就认为是正样本&#xff0c;圈外的是其他样本&#xff0c;如图1所示&#xff1a; 图1 OSVM…

Blender4.2版本正式上线,新版本的5个主要功能!

​Blender刚刚推出了备受瞩目的 Blender 4.2 版本&#xff0c;这款软件专为那些在视觉特效、动画制作、游戏开发和可视化设计领域工作的艺术家们量身打造。作为最新的长期稳定更新&#xff0c;Blender 4.2 不仅稳定可靠&#xff0c;还引入了备受期待的“Eevee Next”实时渲染引…

基于深度残差网络迁移学习的浸润性导管癌检测

1. 引言 癌症是一种异常细胞不受控制地分裂损害健康组织的疾病。皮肤或覆盖我们内脏的组织中的癌细胞被称为癌。乳房中的大多数癌是导管癌。侵袭性导管癌(Invasive Ductal Carcinoma, IDC)始于乳管&#xff0c;侵犯乳房周围纤维组织&#xff0c;晚期可通过血液扩散至淋巴结或身…

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁&#xff08;Mutex&#xff09;8.2 条件变量&#xff08;Condition Variable&#xff09;8.3 信号量&#xff08;Semaph…

华为云GaussDB部署指南:主备架构的常见问题与解决方案

文章目录 华为云GaussDB部署指南&#xff1a;主备架构的常见问题与解决方案背景介绍部署步骤1.修改主机名2.软件安装检查3.禁用交换内存4.创建数据目录并挂载5.配置NTP时钟同步6.添加资源限制参数7.修改网卡的MTU8.上传安装工具包9.编辑集群配置文件10.修改集群安装模板11.安装…

ROS、pix4、gazebo、qgc仿真ubuntu20.04

一、ubuntu、ros安装教程比较多&#xff0c;此文章不做详细讲解。该文章基于ubuntu20.04系统。 pix4参考地址&#xff1a;https://docs.px4.io/main/zh/index.html 二、安装pix4 1. git clone https://github.com/PX4/PX4-Autopilot.git --recursive 2. bash ./PX4-Autopilot…

可视化剪辑,账号矩阵,视频分发,聚合私信一体化营销工具 源----代码开发部署方案

可视化剪辑&#xff1a; 为了实现可视化剪辑功能&#xff0c;可以使用流行的视频编辑软件或者开发自己的视频编辑工具。其中&#xff0c;通过设计用户友好的界面&#xff0c;用户可以简单地拖拽和放大缩小视频片段&#xff0c;剪辑出满足需求的视频。在开发过程中&#xff0c;可…

SpringBoot框架学习笔记(四):yaml 介绍及其使用

1 yaml 介绍 百度百科&#xff1a;YAML 是 “YAML Aint a Markup Language”&#xff08;YAML 不是一种标记语言&#xff09;的递归缩写。在开发这种语言时&#xff0c;YAML 的意思其实是&#xff1a;“Yet Another Markup Language”&#xff08;仍是一种标记语言&#xff09…

电流测量分流电阻

电流测量分流电阻 测量电流的设备称为安培计。大多数现代安培计测量已知电阻的精密电阻上的电压降。电流的计算使用欧姆定律&#xff1a;我五R 大多数电流表都内置电阻器来测量电流。但是&#xff0c;当电流对于电流表来说太高时&#xff0c;需要不同的设置。解决方案是将电流…

使用 Flask 3 搭建问答平台(三):注册页面模板渲染

前言 前端文件下载 链接https://pan.baidu.com/s/1Ju5hhhhy5pcUMM7VS3S5YA?pwd6666%C2%A0 知识点 1. 在路由中渲染前端页面 2. 使用 JinJa 2 模板实现前端代码复用 一、auth.py from flask import render_templatebp.route(/register, methods[GET]) def register():re…

= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑

一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…

IAR嵌入式开发解决方案已全面支持芯科集成CX3288系列车规RISC-V MCU,共同推动汽车高品质应用的安全开发

中国上海&#xff0c;2024年7月16日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR与芯科集成电路&#xff08;以下简称“芯科集成”&#xff09;联合宣布&#xff0c;最新版本IAR Embedded Workbench for RISC-V 3.30.2功能安全版已全面支持芯科集成CX3288系列车规RISC-V…

目标检测IOU和NMS详解

1. 目标检测中两个重要的概念:IOU和NMS 1, 具体来说&#xff0c;它是两边界框相交部分面积与相并部分面积之比&#xff0c;如下所示&#xff1a; 2.原理 这里详细解释一下计算的原理&#xff1a; 一般来说我们给定框的坐标有两种形式&#xff1a; [x,y,w,h] (或者说是[x,y,h,…

windows 11 PC查询连接过的wlan密码

1:管理员打开cmd 2:输入netsh wlan show profiles 3:netsh wlan show profiles Shw2024-5G keyclear 密码关键内容&#xff1a;12345678

全时守护,无死角监测:重点海域渔港视频AI智能监管方案

一、方案背景 随着海洋经济的快速发展和海洋资源的日益紧缺&#xff0c;对重点海域渔港进行有效监控和管理显得尤为重要。视频监控作为一种高效、实时的管理手段&#xff0c;已成为渔港管理中不可或缺的一部分。当前&#xff0c;我国海域面积广阔&#xff0c;渔港众多&#xf…

Token Labeling(NeurIPS 2021, ByteDance)论文解读

paper&#xff1a;All Tokens Matter: Token Labeling for Training Better Vision Transformers official implementation&#xff1a;https://github.com/zihangJiang/TokenLabeling 出发点 ViTs的局限性&#xff1a;尽管ViTs在捕捉长距离依赖方面表现出色&#xff0c; 但…

Postman导出excel文件

0 写在前面 在我们后端写接口的时候&#xff0c;前端页面还没有出来&#xff0c;我们就得先接口测试&#xff0c;在此记录下如何使用postman测试导出excel接口。 如果不会使用接口传参可以看我这篇博客如何使用Postman 1 方法一 2 方法二 3 写在末尾 虽然在代码中写入文件名…

Linux 推出 Redis 分支 Valkey

Valkey——一个开源高性能键值存储 Redis 公司宣布更改开源许可之后&#xff0c;社区里出现了多个 Redis 分支&#xff0c;如 Redict、Valkey 等 2024 年 3 月 21 日&#xff0c;Redis 背后企业 Redis 的 CEO Rowan Trollope 宣布&#xff0c;该项目的许可证类型将从原本的 BS…

VLAN 划分案例详解

vlan 的应用在网络项目中是非常广泛的&#xff0c;基本上大部分的项目都需要划分 vlan&#xff0c;这里从基础的 vlan 的知识开始&#xff0c;了解 vlan 的划分原理。 为什么需要 vlan&#xff1a; 1、什么是 VLAN&#xff1f; VLAN&#xff08;Virtual LAN&#xff09;&…

SpringCloud------Sentinel(微服务保护)

目录 雪崩问题 处理方式!!!技术选型 Sentinel 启动命令使用步骤引入依赖配置控制台地址 访问微服务触发监控 限流规则------故障预防流控模式流控效果 FeignClient整合Sentinel线程隔离-------故障处理线程池隔离和信号量隔离​编辑 两种方式优缺点设置方式 熔断降级-----…