PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了文件包含漏洞:warmup大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

buu第一题。

get到的知识:

  1. ?二次编码的文件会被当成目录(@L_931_1@myadmin4.81的漏洞);
  2. 一个新的绕过姿势;

题目:

<?PHP
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$pagE)
        {
            $whitelist = ["source"=>"source.PHP","hint"=>"hint.PHP"];
            if (! isset($pagE) || !is_String($pagE)) {
                echo "you can't see it";
                return false;
            }                          //检测传入的page变量是否为空

            if (in_array($page, $whitelist)) {
                return true;           // 检测page变量是否在白名单中
            }

            $_page = mb_substr(         //第一次?截断。具体的语法见下文
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                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'])
        && is_String($_requEST['file'])
        && emmm::checkFile($_requEST['file'])
    ) {
        include $_requEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

思路分析:

代码的总体思路已经写在注释里了。这里主要有两个点要注意:
1.?过滤中的PHP函数
mb_substr():跟substr()差不多,截取目标串的相关区间的字符串。
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置。
2.关于?的二次编码:
简而言之,就是:如果我们对?进行二次编码/解码(传入url时解码一次,上文的代码中urldecode函数解码一次),那么所被包含的名称就会被认为是一个目录(文件夹)而不是一个特定的文件

payload的构造和相关分析:

?file=hint.PHP?../../../../../ffffllllaaaagggg
  • 前面的问号是为了使file在检测中被截断为hint.PHP,从而绕过白名单。
  • ../../../../是因为传入的的hint.PHP被当作是一个目录,需要多个../去跨目录。具体是几层,大概是自己试出来的?

  1. 一篇普通的wp:https://blog.csdn.net/destiny1507/article/details/101374603?utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control

2.对于这个漏洞的详细分析:
https://blog.csdn.net/Mikasa_/article/details/88594749

大佬总结

以上是大佬教程为你收集整理的文件包含漏洞:warmup全部内容,希望文章能够帮你解决文件包含漏洞:warmup所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: