[BUUOJ记录] [极客大挑战 2020] Roamphp1-Welcome

简单的基础题
打开题目看到一片空白,查看HTTP状态码看到405:

改用POST请求方式再次请求:

得到源码:

<?php
error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.1 405 Method Not Allowed");
exit();
} else {
    
    if (!isset($_POST['roam1']) || !isset($_POST['roam2'])){
        show_source(__FILE__);
    }
    else if ($_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])){
        phpinfo();  // collect information from phpinfo!
    }
}

重点关注这里:$_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])
注意两个判断都是强等于,这里利用PHP黑魔法数组绕过来绕过检测,原理就是PHP的sha1()函数无法处理数组类型,因而当传入数组时第二个判断就会返回True,构造Payload:
roam1[]=1&roam2[]=2
带上数据再次POST请求得到phpinfo,在环境变量中找到Flag:

看了一下原题解,原题应该是查看phpinfo信息得到flag所在文件位置:

访问l/f1444aagggg.php却发现404:

但是认真看看却发现和正常的404不太一样:

然后认真查看返回包的头信息获得Flag:

posted @ 2021-07-06 22:01  Ye'sBlog  阅读(224)  评论(0编辑  收藏  举报