首页 > 其他分享 >[HCTF 2018]WarmUp 1

[HCTF 2018]WarmUp 1

时间:2024-10-21 10:45:32浏览次数:10  
标签:WarmUp mb whitelist HCTF flag 2018 file php page

[HCTF 2018]WarmUp 1

资源收集,查看源代码之后,看到如下代码:

<?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;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_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\" />";
    }  
?>

解析代码:

  • &$page:引用传递,为了防止内部修改变量而改变外部变量。
  • in_array(变量1,变量2):判断变量1是否存在变量2中。
  • mb_substr():取指定长度的子字符串,取左不取右。
  • mb_strpos():查找一个字符串中某个字符或子字符串第一次出现的位置,没有出现的自动在后面补一个。
  • urldecode():解码的 URL 编码字符串。

解题思路:

  • 传入的flie的内容必须在 $whitelist 变量里面。

  • ?file=( $whitelist )------------->这样输入的内容会被截取一整段.如果希望不被截取,可以在后面加一个?

  • 最后查询运行到 include $_REQUEST[‘file’];从而得到flag

详细步骤:

输入?file=source.php没有什么用,换成file=hint.php,从而得到flag not here, and flag in ffffllllaaaagggg,

在这里插入图片描述

根据flag not here, and flag in ,在网站上面查找ffffllllaaaagggg文件夹,发现被过滤了,所以要在?file=hint.php后面再加一个?---->?file=hint.php?

在这里插入图片描述

得到flag
在这里插入图片描述

标签:WarmUp,mb,whitelist,HCTF,flag,2018,file,php,page
From: https://blog.csdn.net/qq_59103228/article/details/143106549

相关文章

  • 【题解】「COCI 2018」Teoretičar
    LinkofThisProblem根据Vizing定理,最小的答案就是二分图的最大度数。同时可以在\(O(nm)\)的时间复杂度内构造出一组解。显然对于这道题我们需要更高效的做法。注意到\(2\)的整数次幂,考虑分治。既然答案跟最大度数有关,如果我们每次能把边集分为两个集合,认为她们的颜色......
  • [题解]NOIP2018模拟赛 plutotree
    题目描述给定一棵有\(n\)个节点的树,根节点为\(1\),节点\(i\)有权值\(w[i]\)。这棵树非常奇怪,它的每个叶子结点都有一条连向根节点的权值为\(0\)的边。给定\(q\)次询问,每次给定\(u,v\),请计算出一条\(u\)到\(v\)的路径(每条边最多经过\(1\)次),最小化该路径上的点权之和,并在其基础上最......
  • cad2018丢失vcomp140.dll怎么办?dll缺失的解决办法
    当您在使用AutoCAD2018时遇到“丢失vcomp140.dll”错误,这通常意味着系统中缺少VisualC++RedistributableforVisualStudio2015的组件。vcomp140.dll是MicrosoftVisualC++库的一部分,许多基于Windows的应用程序,包括AutoCAD,都需要这个库来运行。以下是一些解决此问题的步......
  • [TJOI2018] 游园会 题解
    T7[TJOI2018]游园会只能说是道有意思的好题。一般来说遇到这种题我们想到的都会是设\(f_{i,\dots}\)表示长度为\(i\),然后后面跟一堆状态的情况。此题需要我们满足两个条件:LCS的长度;不能出现\(\texttt{NOI}\)的子串。第二个限制我们可以通过状态设计来解决,但第一个......
  • [JSOI2018] 潜入行动 题解
    T6[JSOI2018]潜入行动很套路、很裸的一道树形DP。看了状态就会推方程的那种。设\(f_{u,i,0/1,0/1}\)表示以\(u\)为根的子树中有\(i\)个监听器、\(u\)有没有监听器、\(u\)有没有被监听的方案数。显然要枚举子节点\(v\)、\(u\)的监听器数量\(i\)、\(v\)的监听器数......
  • P4774 [NOI2018] 屠龙勇士
    典题。题目不难,注意细节就行。#include<iostream>#include<iomanip>#include<cstdio>#include<vector>#include<stack>#include<queue>#include<bitset>#include<map>#include<set>#include<unordered_map&......
  • 2018-8-10-win10-uwp-Window.Current.Dispatcher中Current为null
    titleauthordateCreateTimecategorieswin10uwpWindow.Current.Dispatcher中Current为nulllindexi2018-08-1019:16:53+08002018-2-1317:23:3+0800Win10UWP本文说的是进行网络中异步界面出现的错误,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期。如果......
  • 2018-8-10-win10-uwp-商业游戏-1.2.1
    titleauthordateCreateTimecategorieswin10uwp商业游戏1.2.1lindexi2018-08-1019:16:50+08002018-2-1317:23:3+0800Win10UWP上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏。希望大家在看这篇文章之前先看win10uwp商业游戏,在这个文章告诉了大家如何创建......
  • E62 树形DP P8677 [蓝桥杯 2018 国 A] 采油
    视频链接:  P8677[蓝桥杯2018国A]采油-洛谷|计算机科学教育新生态(luogu.com.cn)//树形DP+贪心O(nlogn)#include<bits/stdc++.h>#defineN100010usingnamespacestd;vector<int>e[N];intn,B[N],S[N],f[N],len;structman{intb,s;};boolcmp(manx,......