3.[BUUCTF HCTF 2018]WarmUp1

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

3.[BUUCTF HCTF 2018]WarmUp1_第1张图片

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

2.打开链接,分析题目

3.[BUUCTF HCTF 2018]WarmUp1_第2张图片

3.[BUUCTF HCTF 2018]WarmUp1_第3张图片

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

3.[BUUCTF HCTF 2018]WarmUp1_第4张图片

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

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

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

3.[BUUCTF HCTF 2018]WarmUp1_第5张图片

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

3.[BUUCTF HCTF 2018]WarmUp1_第6张图片

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

重点在:

 if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "
"; }

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

4.开始解题

3.[BUUCTF HCTF 2018]WarmUp1_第7张图片

有点可疑,去看一下

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

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

3.[BUUCTF HCTF 2018]WarmUp1_第8张图片

大概意思是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

你可能感兴趣的:(WEB刷题,web基础)