zoukankan      html  css  js  c++  java
  • [极客大挑战 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:

    [ * ]博客中转载的文章均已标明出处与来源,若无意产生侵权行为深表歉意,需要删除或更改请联系博主: 2245998470[at]qq.com

  • 相关阅读:
    只出现一次的数字
    SpringBoot整合Redis
    MFC 0误差画图
    模仿.NET的序列化机制
    求最大子数组
    让CFrameWnd派生类的对象响应鼠标消息的“变态”方法
    关于chm文件和'#'的惊人发现
    CxImage学习笔记
    C++指针系列
    MFC,C++ 截屏
  • 原文地址:https://www.cnblogs.com/yesec/p/14979205.html
Copyright © 2011-2022 走看看