NSSCTF-Web题目20(文件包含)

目录

[HCTF 2018Warmup](#[HCTF 2018]Warmup)

1、题目

2、知识点

3、思路

[HGAME 2023 week1Classic Childhood Game](#[HGAME 2023 week1]Classic Childhood Game)

4、题目

5、知识点

6、思路


HCTF 2018Warmup

1、题目
2、知识点

文件包含,代码审计

3、思路

打开题目,发现只有一个表情,右键查看源码

发现了source.php文件,打开,发现源码

进行代码审计

先对一些不认识的函数进行解释

in_array(a,b):检测b中是否有a

mb_substr(a,b,c):将a进行分片,从b到c,左闭右看

mb_strpos(a,b):返回a中第一次出现b字符串的位置

urldecode():url解码

include():将PHP文件内容插到另外一个PHP文件中,只产生警告,程序会继续执行

下面对代码进行解释

php 复制代码
 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;
            }
            //对$page参数的内容进行切片,并赋值给$_page
            $_page = mb_substr(
                $page,
                0,
                //获取$page参数的内容第一个出现?的位置
                mb_strpos($page . '?', '?')
            );
            //对$page参数切片后的内容进行判断,看看是否在数组里面
            if (in_array($_page, $whitelist)) {
                return true;
            }
            //将$page参数的值进行url解码
            $_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或者POST上传的file参数的内容是否为空
    if (! empty($_REQUEST['file'])
        //判断$file是否为字符串
        && is_string($_REQUEST['file'])
        //执行emmm类中的checkFile函数
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

我们先访问hint.php

提示flag在ffffllllaaaagggg文件中

构造payload:

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

这里用四个../是因为一般Web服务的文件夹在/var/www/html目录中,而ffffllllaaaagggg在根目录下,所以用四层

得到flag:NSSCTF{3204be46-27f5-40b0-8047-9ac0d07d18f5}


HGAME 2023 week1Classic Childhood Game

4、题目
5、知识点

前端JS代码

6、思路

这种就需要在代码里面找,找到过关的那一个点,修改代码

在Events.js文件中,可以看到很多事件,都在调用mota()函数,在结尾出现了mota函数

可以发现这个函数是一个解密函数,打卡控制台运行这个函数,得到flag

得到flag:hgame{fUnnyJavascript&FunnyM0taG4me}


这篇文章就先写到这里了,哪里不懂的或者哪里不足的欢迎指出

相关推荐
聚美智数6 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
lpfasd1237 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
Data analyse4569 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai10 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记10 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁11 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu11 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!11 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格11 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人11 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js