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}


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

相关推荐
To_OC4 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
To_OC5 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
Chengbei115 小时前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
风月说与山鬼6 小时前
三、大括号语法
前端·react.js
kyriewen6 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
Csvn7 小时前
🕰️ 闭包 + setTimeout 的 5 个经典陷阱:为什么定时器看到的永远不是最新的值?
前端
夜雪一千7 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
lilian2337 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
CarIise8 小时前
CSS选择器与样式关联
前端·css·tensorflow