• 文件隐藏 [极客大挑战 2019]Secret File1


    打开题目

    查看源代码发现有一个可疑的php

    访问一下看看

    点一下secret

    得到如下页面

    响应时间太短我们根本看不清什么东西,那我们尝试bp抓包一下看看

    提示有个secr3t.php

    访问一下

    得到

    我们看见了flag.php

    访问一下可是什么都没有

    那我们就进行代码审计

     $file=$_GET['file'];
        if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){

    get传参传入一个file参数,然后用strstr函数和stristr函数(严格大小写)检查 $file 是否包含 ../, tp, input, data 中的任何一个字符串。

            echo "Oh no!";
            exit();
        }
        include($file); 
    //flag放在了flag.php里

    如果匹配到其中任何一个,将输出 "Oh no!" 并结束脚本。如果用户提供的 $file 参数通过了过滤器的检查,include($file); 将包含对应的文件

    这里其实就很明显要用php伪协议来读取了,其中还不能包含input,data等字眼

    那我们便用php://filter读取flag.php文件内容

    payload:

    ?file=php://filter/read=convert.base64-encode/resource=flag.php

    得到密文

    我们base64解密一下得到

       
           
            FLAG
       

       






            
           

    啊哈!你找到我了!可是你看不到我QAQ~~~





            
           


                                echo "我就在这里";
                    $flag = 'flag{0f144661-a3d7-44b8-84a0-0250d2f960ff}';
                    $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
                ?>
           


       

    知识点:

    • strstr函数

    返回字符串中从某指定字符开始到结束处的字符串。

    1、strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
    2、找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;
    3、如果未找到所搜索的字符串,则返回NULL。

      char *strstr(char *str1, const char *str2);   //返回值为字符型指针
      str1: 被查找目标
      str2: 要查找对象

    例子;

    1. #include
    2. #include
    3. main()
    4. {
    5. char *s="GoldenGlobalView";
    6. char *l="lob";
    7. char *p;
    8. p=strstr(s,l);
    9. if(p)
    10. printf("%s",p);
    11. else
    12. printf("NotFound!");
    13. return 0;
    14. }

    运行结果为:

    lobalView
    

    来源于:strstr()函数的使用说明(C语言)_c语言strstr函数的用法-CSDN博客

    • stristr函数

            搜索字符串在另一字符串中的第一次出现,并返回字符串的剩余部分。和strstr函数的用法是一样的,但是该函数是不区分大小写的。如需进行区分大小写的搜索,请使用 strstr() 函数。

  • 相关阅读:
    【C#学习笔记】事件
    C++学习寄录(八.继承)
    在 docker 容器中使用 docker
    做一个高中信息技术教资复习
    字符串中数据排序
    答对这3个面试问题,薪资直涨20K
    Python中Tkinter模块的Canvas控件使用学习(3:绘制工艺卡片)
    dubbo入门小案例
    Python开发自定义Web框架
    广西建筑模板厂家批发——能强优品木业
  • 原文地址:https://blog.csdn.net/m0_75178803/article/details/134471499