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

[HCTF 2018]WarmUp

时间:2024-10-31 22:48:53浏览次数:5  
标签:WarmUp .. REQUEST HCTF source 2018 file php page

题目链接:https://buuoj.cn/challenges#[HCTF 2018]WarmUp

打开环境后如下。

查看页面源代码,发现存在提示 "source.php"。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <!--source.php-->
  
    <br><img src="https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg" /></body>
</html>

访问 source.php 页面如下。

提取一下出现的代码(此处添加了笔者注释)。

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            // 白名单
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            // 如果 $page 参数没有被设置,或不是一个字符串
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }
            // 如果 $page 参数的值在白名单中
            if (in_array($page, $whitelist)) {
                return true;
            }
            // mb_substr 函数:截取子串
            // mb_strpos 函数:找到指定字符第一次出现在字符串中的下标
            // 新建变量 $_page,截取掉原 $_page 中可能出现的 ? 字符
            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            // 如果 $_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;
        }
    }
    // 检测是否存在 $_GET['file'] 或 $_POST['file'],并且是字符串,并且通过 emmm::checkFile 检测
    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\" />";
    }  
?>

通过代码分析可以知道,网站接收一个 "file" 参数,并对该参数进行一系列检测。同时,该代码中还提示了存在两个 php 文件,分别是 "source.php" 与 "hint.php"。

hint.php 页面如下。

hint.php 提示了本题的 flag 是在 "ffffllllaaaagggg" 中。

Payload:?file=source.php?/../../../../../../ffffllllaaaagggg

以下结合 Payload 进行分析:

  1. 用户传入 file 参数,并设置为:source.php?/../../../../../../ffffllllaaaagggg
  2. empty($_REQUEST['file'] 检测通过。
  3. is_string($_REQUEST['file']) 检测通过。
  4. 进入到:emmm::checkFile($_REQUEST['file']) 检测。
  5. 在代码:$_page = mb_substr($page,0,mb_strpos($page . '?', '?')); 处,$_page 被设置为:source.php,因此代码:if (in_array($_page, $whitelist)) 检测通过,执行代码:include $_REQUEST['file']
  6. 即,include "source.php?/../../../../../../ffffllllaaaagggg",存在路径穿越漏洞,导致实际执行代码:include "/../../../../../../ffffllllaaaagggg",包含了存放了 flag 的文件。

标签:WarmUp,..,REQUEST,HCTF,source,2018,file,php,page
From: https://www.cnblogs.com/imtaieee/p/18519080

相关文章

  • Adobe Acrobat Pro 2024 v24.3.20180 (macOS, Windows) - 创建、转换和编辑 PDF
    AdobeAcrobatPro2024v24.3.20180(macOS,Windows)-创建、转换和编辑PDFAdobeAcrobatPDFsoftware请访问原文链接:https://sysin.org/blog/adobe-acrobat查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAcrobat:创建、转换和编辑PDF借助Acrobat实现各种......
  • 复现-SHCTF2024-week4-Crypto
    Crypto复现参考文献:2024-SHCTF-week4-wp-crypto|糖醋小鸡块的blog鸡块师傅真的太强了(膜拜*siDH就讲一下这题遇到的问题,鸡块师傅说的可能不是很清楚。这里先贴一下参考文献:前几天源鲁杯有一题,翻到最后就是,里面有讲数据的构造,和攻击思想微信公众平台(贴一下)Castryck-Dec......
  • 2024-SHCTF Web WP
    [Week1]1zflask按照提示访问robots.txt,访问/s3recttt得到一个python文件在api路由传参,直接执行命令得到[email protected]('/api')defapi():cmd=request.args.get('SSHCTFF','ls/')result=os.popen(cmd).read()returnresult[Week1......
  • SHCTF week1-3
    最后一周没时间做了,开摆了.1zflaskrobots.txt文件泄露加任意命令执行importosimportflaskfromflaskimportFlask,request,send_from_directory,send_fileapp=Flask(__name__)@app.route('/api')defapi():cmd=request.args.get('SSHCTFF','ls/......
  • 2024.10.4 2018-2019 ACM-ICPC Southeastern European Regional Programming Contest
    比赛链接Solved:7/11Penalty:914Rank:1/74Rank(vp):63/1k+Dirt:22%G答案是4*纯色块数+5。考虑怎么维护这个纯色块数。这道题的修改保证了一个块纯色当且仅当其行列都纯色。因此对行列分别维护一棵线段树,维护每一层分别有多少个纯色节点,按层乘起来相加就行。K1操作的增加量......
  • 题解:P7306 [COCI2018-2019#1] Strah
    分享一个\(O(nm\logm)\)的方法。分析考虑每次在\(x\)轴上固定左端点,然后移动\(x\)轴上的右端点,并统计答案。考虑如何统计一个\(1\timesn\)的区域的贡献。显然长度为\(i\)的区间有\(n-i+1\)个,所以贡献即为:\[\begin{aligned}f(n)=&\sum^n_{i=1}i\left(n-i+1\ri......
  • 1-petalinux2018.3摸索记录-petalinux-config
    1-petalinux2018.3摸索记录-petalinux-config一、petalinux-config的具体配置-ZYNQMPConfiguration​​1、LinuxCompomentSelection​​LinuxCompomentSelection,Linux组件选择.FirstStageBootloader和Autoupdateps_init勾选会自动生成fsbl.elf,自动更新ps_i......
  • 0-petalinux2018.3摸索记录-快速亮机
    0-petalinux2018.3摸索记录-快速亮机一、环境搭建1、环境要求①需要注意petalinux、vivado、vitis、linux之间的版本对应关系,在ug1144上可以找到②需要注意linux的硬件要求,运存8G以上不然会报错等等2、环境依赖配置2018.3_PetaLinux_Package_List.xls......
  • 4-petalinux2018.3摸索记录-linux驱动(交叉编译)
    4-petalinux2018.3摸索记录-linux驱动(交叉编译)前面通过petalinux-build完成了镜像的编译生成,通过命令行完成了GPIO的驱动,接下来记录如何使用C语言在Linux通过交叉编译的方式完成xilinx-linux设备驱动的开发。学习过程中发现,大部分厂商的教程都是提供一套带脚本的环境,......
  • 3-petalinux2018.3摸索记录-命令驱动_交叉编译链
    3-petalinux2018.3摸索记录-命令驱动_交叉编译链一、命令行控制GPIO对于ps端设备,在板卡的linux系统中,切换到/sys/class/gpio​路径下可以看到目前挂载的gpio设备。export:导入用户空间gpiochip:系统中gpio寄存器信息unexport:移除用户空间​​以MIO40......