当前位置: 首页 > article >正文

文件隐藏 [极客大挑战 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解密一下得到

<!DOCTYPE html>

<html>

    <head>
        <meta charset="utf-8">
        <title>FLAG</title>
    </head>

    <body style="background-color:black;"><br><br><br><br><br><br>
        
        <h1 style="font-family:verdana;color:red;text-align:center;">啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br>
        
        <p style="font-family:arial;color:red;font-size:20px;text-align:center;">
            <?php
                echo "我就在这里";
                $flag = 'flag{0f144661-a3d7-44b8-84a0-0250d2f960ff}';
                $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
            ?>
        </p>
    </body>

</html>

知识点:

  • strstr函数

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

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

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

例子;

#include <stdio.h>
#include <string.h>
main()
{
    char *s="GoldenGlobalView";
    char *l="lob";
    char *p;
    p=strstr(s,l);
    if(p)
        printf("%s",p);
    else
        printf("NotFound!");
    return 0;
}

运行结果为:

lobalView

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

  • stristr函数

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


http://www.kler.cn/news/135385.html

相关文章:

  • springboot(ssm大学生成绩管理系统 成绩管理平台Java(codeLW)
  • 【Spring】之初识
  • 西南科技大学814考研一
  • wpf devexpress自定义编辑器
  • 【iOS】——知乎日报第五周总结
  • SVG直线 <line>与折线 <polyline>代码示例
  • C++入门(3)—内联函数、auto、范围for、nullptr
  • 【18年扬大真题】给定有m个整数的递增有序数组a和有n个整数的递减有序数组b,将a数组和b数组归并为递增有序的数组c
  • 物联网AI MicroPython学习之语法 SPI串行外设通信
  • Kotlin 知识体系
  • 4-5学生分数对应的成绩
  • electron使用better-sqlite3打包失败(electron打包有进程没有界面)
  • 起立科技(起鸿)在第25届高交会上展示透明OLED技术创新
  • 22年+21年 计算机能力挑战赛初赛C语言程序题 题解
  • linux结束 java jar
  • Cesium 问题:输出的 纬度 latitude 是 0
  • 可以自己实现的Python小游戏,共十四个可收藏可直接拿走~
  • 大数据时代,怎样通过日志分析保护我们的数据!
  • 一篇博客读懂双向链表
  • 电机应用开发-PID控制器参数整定
  • Git使用指南
  • 2023前端大厂高频面试题之CSS篇(2)
  • JVM中的 -Xms参数 设置 JVM 的初始堆大小
  • 【数据结构】——双链表(增删查改)
  • Django_学习_02
  • GO 抽象工厂模式设计
  • 『亚马逊云科技产品测评』活动征文|通过lightsail一键搭建Drupal VS 手动部署
  • 快速集成Skywalking 9(Windows系统、JavaAgent、Logback)
  • Django学习日志08
  • 详解JS遍历数组的十八种方法