news 2026/5/20 18:05:01

RCE漏洞的原理详细讲解并基于pikachu靶场的实战演戏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RCE漏洞的原理详细讲解并基于pikachu靶场的实战演戏

前言

再讲rce漏洞之前 问大家一个问题

你们肯定听说过一句话木马 后门文件这些词汇吧

那你们知道他们是利用什么进行攻击的吗

就是利用咱们要讲的rce漏洞去执行

开场:假如你的电脑有一把“万能钥匙”

什么是 RCE 漏洞?

它就像一把能打开你家、邻居家甚至整栋楼的“万能钥匙”。一旦被黑客掌握,他们就能远程打开你的电脑、服务器,甚至整个网络大门,在你的系统里为所欲为。

RCE(remote command/code execute)概述

RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

根源就是一句话:用户可控输入 + 未过滤/过滤不严 + 直接执行命令/代码 = RCE漏洞。

官方定义

一种高危安全漏洞,允许攻击者通过网络连接,在目标系统(服务器、电脑、手机等)上未经授权地执行任意代码或命令。这意味着攻击者完全控制了受影响的设备,能窃取数据、植入恶意软件,甚至接管整个网络系统。

人话解释

你家的电脑或公司的服务器,在网上有个“入口”(比如一个网站或APP接口)。正常情况下,这个入口只让你做特定的事(比如登录、发帖)。


但如果存在RCE漏洞,就相当于大门没锁,黑客能通过这个入口,让你的设备“言听计从”,执行他发给你的任何指令,比如删文件、偷密码,甚至用你的设备去攻击别人。

产生的原因

有些网站的功能(比如 “文件上传”“搜索框”“设备控制界面”),程序员没过滤用户输入的内容,黑客就趁机输入一 段“系统能识别的命令”(比如 “删除所有文件”“偷取数据库里的用户密码”),服务器一看 “哦,是能执行的指令”,就傻乎乎照做了。

我们通过定义知道rce漏洞是分为两种 命令执行和代码执行

两种RCE:命令执行vs.代码执行

命令执行

简单代码
<?php $code=$_GET['x']; echo system($code); ?>

这是一个【完整的后门 / 一句话木马】,谁访问都能直接执行服务器系统命令!

逐行解释

$code=$_GET['x'];接收网址上传来的参数 x,把它存到变量里。

echo system($code);直接执行 $code 里的内容,当成系统命令运行,并把结果输出到网页上。(打印输出访问系统文件 system相当于cmd)

?x=命令= 直接执行系统命令

system() =PHP 执行系统命令的危险函数

http://pikachu/2.1.php/?x=ipconfig

无乱码版
<?php // 设置页面编码为 UTF-8,防止网页乱码 header("Content-Type: text/html; charset=utf-8"); // 获取URL地址栏里的 x 参数(用户输入的系统命令) $code = $_GET['x']; // 开启输出缓冲区:捕获系统命令执行的所有输出内容 ob_start(); // 执行用户传入的系统命令(高危函数!存在RCE漏洞) system($code); // 获取缓冲区里的所有命令执行结果 $res = ob_get_contents(); // 关闭并清空缓冲区 ob_end_clean(); // 将Windows命令行的GBK编码 转为 网页UTF-8编码,彻底解决乱码 echo iconv('GBK','UTF-8//IGNORE',$res); ?>
你还能玩的命令

?x=whoami 查看当前用户

?x=ipconfig 查看网卡信息

?x=dir 查看目录文件

?x=calc 打开计算器(测试用)

?x=ping 127.0.0.1 ping本地地址

?x=net user

?x=msg /server:10.9.31.250 * "把你的零食给我交出来" (在局域网里面对已知IP地址进行弹窗处理)

代码执行

简单代码
<?php $code=$_GET['x']; eval($code); ?>

这是 PHP 最危险的代码 —— 一句话木马(后门)它能让任何人通过网址直接控制你的服务器

逐行解析

$code=$_GET['x'];获取URL地址栏中参数 x 的值(用户输入的代码)

eval($code); eval()函数:把传入的字符串当作 PHP 代码直接执行!

http://pikachu/1.php/?x=phpinfo();

?x=phpinfo(); PHP 的「体检报告」

?x=system('whoami'); 执行系统命令

?x=system('ipconfig'); 执行系统命令

为什么比 system () 更危险?

  • system() 只能执行系统命令

  • eval() 能执行 任意 PHP 代码 + 任意系统命令等于把服务器完全敞开!

总结

命令执行能做的 代码执行也可以做 命令执行不能做的 我代码执行还可以做

连接符

我们先来了解下Windows系统和Linux系统的连接符

Windows系统:

|:只执行后面的语句。

||:如果前面的语句执行失败,则执行后面的语句。

&:两条语句都执行,如果前面的语句为假则执行后面的语句,如果前面的语句为真则不执行后面的语句。

&&:如果前面的语句为假,则直接出错,也不再执行后面的语句;前面的语句为真则两条命令都执行,前面的语句只能为真。

Linux系统:

;:执行完前面的语句再执行后面的语句,当有一条命令执行失败时,不会影响其它语句的执行。

|(管道符):只执行后面的语句。

||(逻辑或):只有前面的语句执行出错时,执行后面的语句。

&(后台任务符):两条语句都执行,如果前面的语句为假则执行后面的语句,如果前面的语句为真则不执行后面的语句。

&&(逻辑与):如果前面的语句为假则直接出错,也不再执行后面的语句;前面的语句为真则两条命令都执行,前面的语句只能为真。(命令替换):当一个命令被解析时,它首先会执行反引号之间的操作。例 echo whoami

处理乱码

在使用pikachu平台进行RCE测试的时候,使用ping时,返回的结果会出现乱码

为浏览器与PHP脚本默认的编码之间存在冲突(如下图)

打开以下文件

65行回车加入下面这句话

$result = iconv("GBK", "UTF-8", $result);

exec "ping"

远程命令执行 (Command Execution)

生活比喻:点外卖

你家的系统就像一个餐厅,有固定的菜单(系统命令)。正常情况下,你通过网站输入一个合法的“菜品”,系统就帮你“下单”执行。但如果有漏洞,黑客就可以在“菜品”后面偷偷加一句:“顺便帮我把厨房的垃圾倒了”(执行另一个命令),系统傻傻地照做了。

技术原理:应用程序将用户输入直接拼接到操作系统命令中执行,而没有做任何过滤或转义处理。

回到题目,我们先来ping一下本地

127.0.0.1

我们跟上连接符看看能不能执行其他命令

127.0.0.1 | dir C:

这里成功查看了C盘的文件,咱们也可以尝试一下其他的连接符,这里我就不多做演示了,理论上可以执行任何的系统命令

127.0.0.1 | whoami

查看当前运行这个程序的用户名

Payload

作用(Windows)

`127.0.0.1

ipconfig`

查看服务器的网络配置

`127.0.0.1

dir`

查看当前目录下的文件列表

`127.0.0.1

type C:\Windows\System32\drivers\etc\hosts`

查看系统 hosts 文件内容

exec "eval"

远程代码执行 (Code Execution)

生活比喻:请私厨上门

这次,黑客不满足于点你菜单上的菜了。他直接把自己的“厨师”(恶意代码)派到你家厨房,让他用你家的锅碗瓢盆(系统资源)做任何他想做的“黑暗料理”,完全接管了烹饪过程。

技术原理:应用程序将用户输入当作自身程序代码的一部分来编译并执行。例如 PHP 中的eval()函数会直接把传入的字符串当作代码运行。

这里pikachu的远程代码执行真的非常简单,建议玩下其他靶场的远程代码执行

eval函数

这里我就简单介绍下eval这个函数

  • 动态执行代码:eval() 函数使程序能够在运行时动态执行字符串中的代码。它可以将字符串中的代码作为有效的程序代码进行解析和执行。
  • 字符串转换为代码:eval() 函数将接收到的字符串参数解析为编程语言的有效代码,并尝试执行该代码。这意味着您可以在字符串中包含变量、表达式、函数调用等,并且它们将在执行时被解释和计算。

phpinfo();

phpinfo() 是PHP 内置的核心函数

作用只有一个:一键输出当前服务器 / 环境的所有 PHP 详细信息。

简单说:它就是 PHP 的「体检报告」

它能显示什么信息?

运行这行代码,会直接打印出一整页详细内容,包括:

  • PHP 版本(7.4 / 8.0 / 8.1 等)
  • 运行环境(Apache/Nginx、操作系统、服务器软件)
  • 开启的扩展 / 模块(MySQL、Redis、GD、curl 等)
  • 配置参数(最大上传大小、超时时间、内存限制)
  • PHP 编译信息、路径、环境变量

加油各位( •̀ ω •́ )y 期待与君再相逢

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 18:03:22

TeamPCP攻击GitHub:3800个内部仓库代码被盗,开价5万美元售卖!

TeamPCP盗走3800个GitHub内部仓库代码2026年5月19日&#xff0c;GitHub官方确认正在调查一起严重的内部仓库入侵事件。臭名昭著的威胁组织TeamPCP在暗网论坛声称窃取了约4000个GitHub内部仓库的私有代码&#xff0c;并开价至少5万美元出售。GitHub随后确认约3800个内部仓库受到…

作者头像 李华
网站建设 2026/5/20 18:02:38

FFT补零技术解析:从频率分辨率到工程实践

1. 项目概述&#xff1a;从一次频谱分析的“翻车”说起几年前&#xff0c;我在调试一个射频接收模块时&#xff0c;遇到了一个让人挠头的问题。我用示波器采集了一段看似干净的1MHz和1.05MHz的双音信号&#xff0c;然后兴冲冲地丢进MATLAB做FFT分析&#xff0c;想看看频谱是否纯…

作者头像 李华
网站建设 2026/5/20 18:02:17

全域旅游整合共生!巨有科技构建目的地文旅新生态

发展全域旅游&#xff0c;是破解旅游发展不平衡不充分问题、拉动区域经济的国家战略。其核心在于打破“景点旅游”的孤岛模式&#xff0c;实现区域资源有机整合。然而&#xff0c;各地普遍面临资源分散、数据不通、营销乏力、服务不均等难题。巨有科技以“一机旅游”平台为核心…

作者头像 李华
网站建设 2026/5/20 18:01:56

HCV Core Protein (59-68);RGRRQPIPKA

一、基础信息多肽名称&#xff1a;丙型肝炎病毒 核心蛋白片段 (59-68) 英文名称&#xff1a;HCV Core Protein (59-68) 三字母序列&#xff1a;Arg-Gly-Arg-Arg-Gln-Pro-Ile-Pro-Lys-Ala 单字母序列&#xff1a;RGRRQPIPKA 氨基酸数量&#xff1a;10 aa 结构特征&#xff1a;线…

作者头像 李华