RCE&代码执行漏洞

RCE&代码执行漏洞

1、RCE执行-代码执行&命令执行

2、CTF考点-漏洞配合&绕过手法

在这里插入图片描述

蓝易云高性能服务器

在这里插入图片描述
|

|

|

|

|

🤪🤪🤪🤪🤪🤪点击购买吧-年付送定制U盘

🤪🤪🤪🤪🤪🤪点击购买吧-年付送定制U盘

🤪🤪🤪🤪🤪🤪点击购买吧-年付送定制U盘

🤪🤪🤪🤪🤪🤪点击购买吧-年付送定制U盘

🤪🤪🤪🤪🤪🤪点击购买吧-年付送定制U盘

🤪🤪🤪🤪🤪🤪点击购买吧-年付送定制U盘

|

|

|

|

|

首先RCE他通常指的是两个漏洞

一个是代码执行漏洞另一个是命令执行漏洞

RCE代码执行漏洞–指的就是引用脚本代码并解析执行
RCE命令执行漏洞–调查系统操作的命令并执行

我们简单的来演示一下这个

RCE代码执行漏洞

<?php
eval ('phpinfo();');

?>

好那么这代码是什么意思呢

其实他的意思就是执行phpinfo()这个函数

那么为什么要这样写呢

首先解析一下这个代码

eval 就是执行函数吗

那么为什么要把phpinfo()用单引号括起来呢

那么用单引号括起来就是将phpinfo()以字符串的形式去执行了

那么当我们直接去访问这个含义phpinfo()这个以上代码的时候他会自动执行并打印出phpinfo()函数执行效果

好,那么我们说一下为什么要这样去写这个phpinfo();

原因是这样的,

就是将这个字符串形式的phpinfo(); 数据以当前网站上存在的脚本代码解析器去解析执行

这就是RCE代码执行漏洞

那么他呢就是会把这个字符串以这个代码的形式去解析去执行

另外一个

RCE命令执行漏洞

命令执行漏洞

一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。
如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。

系统命令执行函数

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
<?php
system('var');

?>
<?php
$a = $_POST['a']; 

system($a);
?>

两种都可以

访问存在RCE命令执行漏洞的页面

http://xxx.xxx.xxx/1.php?a=ipconfig

[ipconfig是windows系统查看当前IP的命令linux的是ifconfig]

秀儿开始

web29

在这里插入图片描述

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:26:48
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

如果说你没有学过php获取其他的编程语言

没关系

你只需要记住几个关键词

img

POST

GET

有很多传输方式

但是呢常用的有两个

一个是post和get

$_GET[‘c’]

看到这个代码首先做比喻把c当中是一个空间或者说一个位置,那么 G E T 是获取这种空间的东西,一旦有东西传输到 c 这个位置上, _GET是获取这种空间的东西,一旦有东西传输到c这个位置上, GET是获取这种空间的东西,一旦有东西传输到c这个位置上, _ GET就是会获取c这个位置上的东西了,他只会获取不会去执行

if(!preg_match(“/flag/i”, KaTeX parse error: Expected '}', got 'EOF' at end of input: …{ eval(c);
}

那么这个代码又是什么呢

我们先看这个函数!preg_match

preg_match 函数用于执行一个正则表达式匹配。

正则表达式简单的来说就是过滤东西,他过滤了什么呢过滤了flag这个词

?c=system(‘ls’);

先通过ls查看当前目录下的文件

有一个flag.php

我们想他就是我们要的flag值

但是呢我们直接读取

c=system(‘cat flag.php’);

读取不了这个文件

为什么呢

因为代码中已经过滤掉了flag这个词

那么我们怎么才能读取到flag.php

这个时候就要会通配符拉

在这里插入图片描述

system(‘tac fla*.php’);

我们用*这个通配符

这个通配符就是所有的意思

如果当前目录下有

flaz.php

flag.php

flal.php

用到了

system(‘tac fla*.php’);

去读取

会把三个文件都读取了

为什么

因为*代表所有

你没有指定那文件

好那么他就是自己判断

只要fla是匹配的后缀php是匹配的,那个*不管是什么都可以

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无聊的知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值