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}


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

相关推荐
程序员码歌几秒前
明年35岁了,如何破局?说说心里话
android·前端·后端
博客zhu虎康1 小时前
React Hooks 报错?一招解决useState问题
前端·javascript·react.js
灰海1 小时前
vue中通过heatmap.js实现热力图(多个热力点)热区展示(带鼠标移入弹窗)
前端·javascript·vue.js·heatmap·heatmapjs
王源骏2 小时前
LayaAir鼠标(手指)控制相机旋转,限制角度
前端
非门由也2 小时前
Android studio安装教程——超详细(含安装包安装教程)
android·ide·android studio
平淡风云2 小时前
Android应用添加日历提醒功能
android·日历
大虾写代码2 小时前
vue3+TS项目配置Eslint+prettier+husky语法校验
前端·vue·eslint
2301_780789662 小时前
渗透测试真的能发现系统漏洞吗
服务器·网络·安全·web安全·网络安全
wordbaby2 小时前
用 useEffectEvent 做精准埋点:React analytics pageview 场景的最佳实践与原理剖析
前端·react.js
上单带刀不带妹2 小时前
在 ES6 中如何提取深度嵌套的对象中的指定属性
前端·ecmascript·es6