zoukankan      html  css  js  c++  java
  • BUUCTF-[HCTF 2018]WarmUp-wp

    进去本来有张滑稽的

     F12查看源码找到source.php 并访问

    获得题目源码 并分析 

    <?php
        highlight_file(__FILE__);   //高亮文件
        class emmm  //声明emmm类
        {
            public static function checkFile(&$page)  //声明方法 一个waf
            {
                $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; // 将source.php 和 hint.php 视为白名单 若要构造 必须有这2个
                if (! isset($page) || !is_string($page)) {  //isset判断 $page是否声明 is_string 判断 $page是否为字符串
                    echo "you can't see it";   //满足条件 输出
                    return false;
                }

                if (in_array($page, $whitelist)) {   //in_array 判断$page中参数是否在$whitelist中 其实就是判断 参数中是否有hint.php 或者 source.php
                    return true;  //有 返回真 
                }

                $_page = mb_substr(  //mb_substr mb_substr() 截取字符串中指定长度字符 mb_strpos()是匹配?前的字符  意思是  参数中必须要有的 hint.php? 或者source.php? 不然过不了白名单


                    $page,
                    0,
                    mb_strpos($page . '?', '?')
                );
                if (in_array($_page, $whitelist)) {  //判断截取的是否在白名单 如果传入参数 hint.php? 截取完就是 hint.php 故在白名单
                    return true;
                }

                $_page = urldecode($page);   //下面的类似 只不过 是先解码 在截取判断 
                $_page = mb_substr(
                    $_page,
                    0,
                    mb_strpos($_page . '?', '?')
                );
                if (in_array($_page, $whitelist)) {
                    return true;
                }
                echo "you can't see it";
                return false;
            }
        }

        if (! empty($_REQUEST['file'])   //判断file传参的值是否为空 
            && is_string($_REQUEST['file'])  //判断值是否为字符串
            && emmm::checkFile($_REQUEST['file']) //调用方法去核对传入参数 也就是把值传给了$page 
        ) {
            include $_REQUEST['file'];  //都满足的话 file传的文件 应该是本地包含 到这个php   
            exit;
        } else {
            echo "<br><img src="https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg" />";
        }   //这个不重要
    ?>

    先访问 hint.php hint是提示


    说明存在一个ffffllllaaaagggg的一个文件  在服务器上 需要构造 本地包含 将这个文件包含在source.php中 

    是file传参  

    python  构造 

     构造 poc  并获得flag 不进行 attack

    payload经过上面的代码审计  可构造 payload:?file=hint.php?../../../../../ffffllllaaaagggg

     不用加后缀  然后 ../有多少个需要自己判断  这里 它可能放在根目录了  ../ 是为了找哪个目录有这个文件名

    致死点 : 文件包含 php审计

  • 相关阅读:
    时装画基础知识--如何画人体
    马士兵java视频学习顺序
    Mysql 中文字符乱码问题
    zendstudio 设置默认编码 utf-8 gbk
    MYSQL 本地无ROOT权限 忘记密码
    windows 3389 远程
    windows 老掉牙CMD的命令
    mysql-常用注入渗透手法
    ubuntu 添加多个IP
    windows下简单配置apache
  • 原文地址:https://www.cnblogs.com/Sabia/p/14056649.html
Copyright © 2011-2022 走看看