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

目录

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

1、题目

2、知识点

3、思路

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

4、题目

5、知识点

6、思路


[HCTF 2018]Warmup

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 week1]Classic Childhood Game

4、题目
5、知识点

前端JS代码

6、思路

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

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

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

得到flag:hgame{fUnnyJavascript&FunnyM0taG4me}


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

相关推荐
Bervin1213816 小时前
Flutter Android环境的搭建
android·flutter
WYiQIU17 小时前
11月面了7.8家前端岗,兄弟们12月我先躺为敬...
前端·vue.js·react.js·面试·前端框架·飞书
谢尔登17 小时前
简单聊聊webpack摇树的原理
运维·前端·webpack
娃哈哈哈哈呀17 小时前
formData 传参 如何传数组
前端·javascript·vue.js
zhu_zhu_xia18 小时前
vue3+vite打包出现内存溢出问题
前端·vue
tsumikistep18 小时前
【前后端】接口文档与导入
前端·后端·python·硬件架构
行走的陀螺仪19 小时前
.vscode 文件夹配置详解
前端·ide·vscode·编辑器·开发实践
2503_9284115619 小时前
11.24 Vue-组件2
前端·javascript·vue.js
Bigger20 小时前
🎨 用一次就爱上的图标定制体验:CustomIcons 实战
前端·react.js·icon
谢尔登20 小时前
原来Webpack在大厂中这样进行性能优化!
前端·webpack·性能优化