RCE复习(ctfhub上)

一、rce漏洞概述

        在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞。

二、常见RCE漏洞函数
1.系统命令执行函数

  1. system():能将字符串作为OS命令执行,且返回命令执行结果;
  2. exec():能将字符串作为OS命令执行,但是只返回执行结果的最后一行(约等于无回显);
  3. shell_exec():能将字符串作为OS命令执行
  4. passthru():能将字符串作为OS命令执行,只调用命令不返回任何结果,但把命令的运行结果原样输出到标准输出设备上;
  5. popen():打开进程文件指针
  6. proc_open():与popen()类似
  7. pcntl_exec():在当前进程空间执行指定程序;

反引号``:反引号``内的字符串会被解析为OS命令;
2.代码执行函数

  1. eval():将字符串作为php代码执行;
  2. assert():将字符串作为php代码执行;
  3. preg_replace():正则匹配替换字符串;
  4. create_function():主要创建匿名函数;
  5. call_user_func():回调函数,第一个参数为函数名,第二个参数为函数的参数;
  6. call_user_func_array():回调函数,第一个参数为函数名,第二个参数为函数参数的数组;

可变函数:若变量后有括号,该变量会被当做函数名为变量值(前提是该变量值是存在的函数名)的函数执行。

三、RCE漏洞的绕过方式:

具体看:RCE漏洞详解及绕过总结(全面)-CSDN博客

接下里看例题:

一.eval执行

进入题目就看见了源代码

php函数意思是:

是否由变量cmd 如果有,就执行eval($_REQUEST["cmd"]);

也就是木马

补充:eval函数,将字符串认为是php代码来执行。

具体:

__isset判断一个变量是否已设置, 即变量已被声明,且其值为ture

所以我们在访问的时候使用变量 cmd

先直接查看根目录有没有flag

/?cmd=sysytem("ls");

注意:这几条命令最后面的“;”都不能省略

发现有php文件,但是没有flag文件

那么就查看上一级目录

/?cmd=system("ls /");

发现了有flag文件,那么就访问这个文件

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

得到flag

二.文件包含

进入题目,看见有一个GET传参,然后下面还有一个shell的超链接

点开看一下

这里又包含了eval函数,而且要求赋值给ctfhub,原网页还有一个get传参 所以这题应该是get+post传参的 并且要赋值给ctfhub才可以执行命令(这里就要用到hackbar了)

那么就按照它说的做,先用get传参

/?file=shell.txt

然后再进行post传参

ctfhub=system("ls");

我们通过查看根目录发现了两个文件

但是并没有发现flag文件

所以查看上一级目录

ctfhub=system("ls /");

发现了flag的字眼,继续查找flag

ctfhub=system("cat /flag");

发现了flag

三.php://input

先了解一下是什么?

php://input 是 PHP 提供的一个伪协议,允许开发者 访问 POST 请求的原始内容。对于 POST 请求数据,PHP 提供了 $_POST 与 $FILES 超全局变量,在客户端发起 POST 请求时,PHP 将自动处理 POST 提交的数据并将处理结果存放至 $_POST 与 $FILES 中。

 所以php://input要用 post请求才可以

使用php://input的条件也满足

接下来就是要用bp进行抓包,然后操作

先在题目地址栏中访问php://input,然后抓包(/?file=php://input)

<?php system("ls");?>

注:在本题使用<?php system('ls');?>无效,要直接使用<?php system('ls /');?>

查看根目录

并且这里修改发送方法为post,目标修改为/?file=php://input

<?php system("ls /");?>

查看上一级目录

<?php system("cat /flag_8199");?>

查看这个flag下的所有内容

得到flag

这题值得注意的点就是php://input 的用法以及它的使用条件 php://input需要用post请求的方式

四.远程包含

进入题目,首先看到源代码,然后下面有个phpinfo的链接,点开看一下

发现符合php://input的使用条件,所以本题可以使用php://input的方法来做

用bp抓包,做法和上一题一样的

首先访问/?file=php://input,然后抓包

抓到包以后,发送到repeater,把GET修改为POST,目标修改为/?file=php://input

并且在body部分执行  <?php system("ls");?> 查看根目录

然后查看上一级目录  <?php system("ls /");?>

最后执行  <?php system("cat /flag");?>

查找flag,并且得到了flag

五.读取源代码

这道题需要我们读取源代码  

这里用php://input发现执行不了 就需要用到另外的一个伪协议 php://filter

先来认识一下它

使用的方法:

/?file=php://filter/read=convert.base64-encode/recource=index.php;

这句话的意思是我们用base64编码的方式来读文件index.php;这时页面会显示出源文件index.php经过base64编码后的内容,然后经过base64解码就可以看到flag;

convert.base64

convert.base64-encode和 convert.base64-decode使用这两个过滤器等同于分别用base64_encode()和base64_decode()函数处理所有的流数据。

convert.base64-encode支持以一个关联数组给出的参数。如果给出了line-length,base64 输出将被用line-length个字符为 长度而截成块。如果给出了line-break-chars,每块将被用给出的字符隔开。这些参数的效果和用base64_encode()再加上 chunk_split()相同。

进入题目,发现它已经给了我们flag的位置

我们直接执行命令:?file=php://filter/resource=/flag

得到flag

还可以:

执行命令/?file=php://filter/read=convert.base64-encode/resource=/flag

让flag以base64编码的方式呈现出来

然后解码

同样的,也可以得到flag

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

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

相关文章

C++模板超详解

目录 一、了解什么是泛性编程 二、模版 1.函数模版 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.5 模板参数的匹配原则 2.类模板 2.1 类模板的定义格式 2.2 类模板的实例化 3. 非类型模板参数 4. 模板的特化 4.1 概念 4.2 …

股票分红扣税!详解现金分红、送红股和转增股本

股票分红 股票分红指的是上市公司根据其盈利情况&#xff0c;按照股东持有的股份比例&#xff0c;向股东分配利润的方式。股票分红需要满足一定的前提条件 1、公司必须存在可供分配的利润&#xff0c;公司在过去的经营活动中已经实现了盈利&#xff0c;并且这些盈利在缴纳了企…

【python技术】使用akshare抓取东方财富所有概念板块,并把指定板块概念的成分股保存excel 简单示例

最近有个想法&#xff0c;分析A股某个概念成分股情况进行分析&#xff0c;第一反应是把对应概念板块的成分股爬取下来。说干就干 下面是简单示例 import akshare as ak import pandas as pddef fetch_and_save_concept_stocks(name):# 获取指定股票概念的成分股&#xff0c;并…

宝塔面板mysql允许root账号登录

直接通过宝塔面板创建的mysql数据库&#xff0c;root是只允许localhost访问的&#xff0c;下面需要配置允许所有IP人员&#xff0c;都能访问 1、进入mysql&#xff1a; mysql -uroot -p 2、 使用mysql库&#xff1a; use mysql; 3. 查看用户表&#xff1a; SELECT Host,U…

K-近邻算法的 sklearn 实现

实验目的与要求 掌握基于 K-近邻分类算法的编程方法通过编程理解 K-近邻分类算法和该算法的基本步骤 实验器材 硬件&#xff1a;PC 机&#xff08;参与实验的学生每人一台&#xff09;软件环境&#xff1a;Python3.7 Pycharm 实验内容 使用 sklearn 库中的 neighbors 模块实…

C++深度解析教程笔记3

C深度解析教程笔记3 第5课 - 引用的本质分析实验-const引用实验-引用的本质实验-引用所占空间大小vs2010反汇编 实验-局部变量的引用小结 第6课 - 内联函数分析实验-内联函数设置允许编译器内联 实验-forceinline小结 本文学习自狄泰软件学院 唐佐林老师的 C深度解析教程&#…

做私域不止是积累流量,生态也很重要!

如今&#xff0c;私域流水占比已经逼近整个零售市场的30%&#xff0c;达到4万亿规模&#xff0c;百度、阿里、腾讯等头部玩家也都在加速布局&#xff0c;私域运营&#xff0c;已不再是一个单一的商业模式或者运营手段&#xff0c;而是逐渐构成一种可持续的行业生态。 一、什么…

el-form 表单设置某个参数非必填验证

html <el-form ref"form" :rules"rules"><el-form-item prop"tiktokEmail" label"邮箱" ><el-input v-model"form.tiktokEmail" placeholder"邮箱" ></el-input></el-form-item&…

Docker-容器的前世今生

文章目录 Docker为什么产生&#xff1f;硬件虚拟化硬件虚拟化解决的问题硬件虚拟化定义硬件虚拟化技术虚拟机的优点虚拟机的缺点 操作系统虚拟化即容器容器化解决的问题容器化定义容器化技术历史 容器和虚拟机对比 Docker的发展历史Docker架构客户端服务端仓库Registry Docker重…

民航电子数据库:mysql与cae(insert语法差异)

目录 示例1、cae插入数据时不支持value关键字&#xff0c;只能使用values2、insert时&#xff0c;就算是自增主键&#xff0c;只要新增时包含了主键&#xff0c;该主键就必须有值&#xff0c;否则会报错&#xff1a;字段xxx不能取空值 对接民航电子数据库&#xff0c;本篇记录i…

循环购模式:引领消费新潮流,共创商业新生态

大家好&#xff0c;我是吴军&#xff0c;今天我想和大家分享一个独特而富有吸引力的商业模式——循环购模式。这是一种融合了消费返利与积分机制的新型购物体验&#xff0c;它为消费者和商家带来了前所未有的互动机会。 在循环购模式的运作下&#xff0c;消费者的每次购物都伴随…

OSPF大作业

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;r4为ISP上只配ip&#xff0c;r3与其他设备之间只使用公有IP 2&#xff0c;r3-r5/6/7为MGRE环境&#xff0c;r3为中心 3&#xff0c;整个OSPF的ip地址基于172.16.0.0/16划分 所以设备都可以访问r4的环回 4减少LSA的数量加快…

【转载】C++代码中将函数返回类型后置有啥好处吗

C代码中将函数返回类型后置有啥好处吗&#xff1f; 内容如下&#xff1a; C代码中将函数返回类型后置有啥好处吗&#xff1f; 这种语法是 C11 新增的&#xff0c;学名叫 trailing return type[1]。翻译过来是后置返回类型&#xff0c;trailing 是后面的、拖尾的意思。书写 int …

质量管理,怎能不知道SPC?

SPC&#xff08;统计过程控制&#xff09;是质量管理的一个重要组成部分&#xff0c;它可以帮助企业更好地控制生产过程、提高产品质量、降低生产成本、增强企业的竞争力。 SPC是一种应用统计技术对过程中的各个阶段进行评估和监控&#xff0c;建立并保持过程处于可接受的并且稳…

深入理解Linux调试工具eBPF和strace、内存泄漏处理、Kubernetes容器调试以及C++协程的崩溃信息收集

在软件开发领域&#xff0c;无论是初级开发者还是资深工程师&#xff0c;都需要面对复杂的调试工作。本文将介绍几个重要的调试工具和技术&#xff0c;并提供实际调试方法的指导&#xff0c;包括Linux环境下的eBPF和strace&#xff0c;内存泄漏问题的处理&#xff0c;Kubernete…

020Node.js的FS模块使用fs.mkdir创建目录

Node.js的FS模块使用fs.mkdir创建目录 //fs.mkdir 创建目录 /*path 将创建的目录路径mode 目录权限&#xff08;读写权限&#xff09;&#xff0c;默认777callback 回调&#xff0c;传递异常参数err*/ const fsrequire(fs);fs.mkdir(./css,(err)>{if(err){console.log(err)…

时间序列模型(含python程序实现)

常用按时间顺序排列的一组随机变量来表示一个随机事件的时间序列&#xff0c;简记为 用表示该随机序列的n个有序观察值&#xff0c;称之为序列长度为n的观察值序列。 常用的时间序列模型 时间序列的预处理 拿到一个观察值序列后&#xff0c;首先要对它的纯随机性和平稳性进行…

PC-3000 Mobile Pro: 智能手机及平板设备数据提取及取证工具

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设…

书生·浦语 大模型(学习笔记-9)大模型微调的相关概念 预训练 与 微调 全量微调FFT 与 PEFT的区别

目录 一、什么是大模型微调 二、指令微调 三、微调的目的 三、微调的方式 四、微调的步骤 五、微调数据准备 六、微调的数据质量 一、什么是大模型微调 预训练和微调的区别&#xff0c;这个很关键 二、指令微调 这个地方主要是微调的角度不同&#xff0c;简单理解&#…

linux jmeter ant下载并安装【2024-亲测】

环境 centos7 一、下载jmeter 在这里插入代码片wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz --no-check-certificate解压 tar -zxvf apache-jmeter-5.6.3.tgz复制到安装目录、设置环境变量 vim /etc/profile添加环境变量&#xff0c;路径改成…
最新文章