[第五空间 2021]WebFTP、[HCTF 2018]Warmup

作者 : admin 本文共2104个字,预计阅读时间需要6分钟 发布时间: 2024-06-17 共1人阅读

目录

[第五空间 2021]WebFTP

​[SWPUCTF 2021 新生赛]Do_you_know_http

[NCTF 2018]签到题

[HNCTF 2022 Week1]What is Web

[HNCTF 2022 Week1]Interesting_http

[HCTF 2018]Warmup


[第五空间 2021]WebFTP

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图

使用dirsearch扫描,发现有git泄露

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(1)

使用GitHack克隆目录,但提示为空仓库

python2 GitHack.py http://node4.anna.nssctf.cn:28914/?m=login&a=in/.git

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(2)

还有其他目录,在phpinfo.php中发现flag

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(3)

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(4)[SWPUCTF 2021 新生赛]Do_you_know_http

打开环境提示说,请使用“WLLM”浏览器!

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(5)

bp抓包修改UA头为WLLM,发包后提示只能本地访问 id为183.224.81.105

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(6)

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(7)

添加X-Forwarded-For:127.0.0.1,回显可看到地址已经变为本地

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(8)

发包得flag

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(9)

[NCTF 2018]签到题

抓包发到重发器,回显后发现flag。

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(10)

[HNCTF 2022 Week1]What is Web

跟上题一样,bp抓包发到重发器,回显后发现flag(base64解码)。

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(11)

[HNCTF 2022 Week1]Interesting_http

打开环境 提示 POST 发包,参数名为 want

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(12)

使用HackBar  POST传参want,提示有flag

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(13)

令want=flag,提示不是 admin 用户

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(14)bp抓包将cookie中的user改为admin

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(15)

改了之后又提示 不是本地,添加xff(X-Forwarded-For:127.0.0.1)回显得到flag。

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(16)

[HCTF 2018]Warmup

[HCTF 2018]WarmUp(代码审不好,看大佬wp)

打开环境只有一个表情包,查看源代码发现source.php

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(17)

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(18)

访问source.php,得到代码

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(19)

代码审计:

"source.php","hint"=>"hint.php"];

//定义了一个名为emmm的类,在该类中有一个静态方法checkFile用于检查要包含的文件是否在白名单中,白名单是一个关联数组$whitelist,其中包含了允许包含的文件的键值对。

        // 如果没有设置$page变量或者$page不是字符串,则返回错误信息
        if (! isset($page) || !is_string($page)) {
            echo "you can't see it";
            return false;
        }

        // 如果$page在白名单中,则返回true
        if (in_array($page, $whitelist)) {
            return true;
        }

        // 截取$page字符串,直到第一个问号的位置
        $_page = mb_substr(
            $page,
            0,
            mb_strpos($page . '?', '?')
        );
        // 如果截取后的$_page在白名单中,则返回true
        if (in_array($_page, $whitelist)) {
            return true;
        }

        // 对$page进行URL解码
        $_page = urldecode($page);

             $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );

        // 如果截取后的$_page在白名单中,则返回true
        if (in_array($_page, $whitelist)) {
            return true;
        }

        // 如果都不满足条件,则返回错误信息
        echo "you can't see it";
        return false;
    }
}

符号点 ‘.’ 是 PHP 中的字符串连接运算符,它用于将两个字符串连接在一起,形成一个更长的字符串。

它将 $page 变量的值和一个问号字符 ‘?’ 连接在一起,形成一个新的字符串,在这个新的字符串中查找问号是否存在,那么很明显肯定能找到。

 $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );

//先使用mb_strpos函数找到$page中第一个问号的位置,然后使用mb_substr函数将问号之前的部分作为$_page进行处理。

 if (! empty($_REQUEST['file'])                                                                                         
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    }else {
        echo "
[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(20)

构造payload,得到flag。

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

//因为当前的source.php一般是在html目录下,往上是www,var,然后到根目录。
flag一般就放在根目录下面,这里还有一个hint.php?/或source.php?/,因此需要返回四层才能到根目录。
即 hint.php?/var/www/html/ffffllllaaaagggg 

[第五空间 2021]WebFTP、[HCTF 2018]Warmup插图(21)

本站无任何商业行为
个人在线分享 » [第五空间 2021]WebFTP、[HCTF 2018]Warmup
E-->