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}


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

相关推荐
叁分之一34 分钟前
“我打包又失败了”
前端·npm
tang游戏王12335 分钟前
AJAX进阶-day4
前端·javascript·ajax
无语听梧桐39 分钟前
vue3中使用Antv G6渲染树形结构并支持节点增删改
前端·vue.js·antv g6
go2coding1 小时前
开源 复刻GPT-4o - Moshi;自动定位和解决软件开发中的问题;ComfyUI中使用MimicMotion;自动生成React前端代码
前端·react.js·前端框架
baozongwi1 小时前
CTF常用sql注入(一)联合注入和宽字节
数据库·sql·web安全
freesharer1 小时前
Zabbix 配置WEB监控
前端·数据库·zabbix
web前端神器1 小时前
forever启动后端服务,自带日志如何查看与设置
前端·javascript·vue.js
是Yu欸1 小时前
【前端实现】在父组件中调用公共子组件:注意事项&逻辑示例 + 将后端数组数据格式转换为前端对象数组形式 + 增加和删除行
前端·vue.js·笔记·ui·vue
今天是 几 号2 小时前
WEB攻防-XSS跨站&反射型&存储型&DOM型&标签闭合&输入输出&JS代码解析
前端·javascript·xss
是小王同学啊~2 小时前
防止跨站脚本攻击XSS之Antisamy
web安全·xss